创建像这样的图表(使用Chart.js,最新版本)后:
var ctx = $('#graph');
var graph = new Chart(ctx, {
type: 'line',
data: someData,
});
Run Code Online (Sandbox Code Playgroud)
我想在另一个函数中检索Chart对象,以便向它添加一些数据点:
var graph = ???
graph.data.labels.push(1)
graph.data.datasets[0].data.push(10);
Run Code Online (Sandbox Code Playgroud)
如何获得图表对象?
先感谢您!
假设我有以下对象:
class Person {
String firstName;
String lastName;
}
class PersonBLO {
Person person;
Integer foo; // Some calculated business property
}
class PersonDTO {
String firstName;
String lastName;
Integer foo;
}
Run Code Online (Sandbox Code Playgroud)
我发现自己正在编写以下映射器:
@Mapping(target = "firstName", source = "person.firstName")
@Mapping(target = "lastName", source = "person.lastName")
PersonDTO personBLOToPersonDTO(PersonBLO personBLO);
Run Code Online (Sandbox Code Playgroud)
是否可以自动将所有person.*属性映射到相应的*属性?
TL;DR:如何使用表单集保存/验证具有唯一属性的多个对象?
假设我有一个Machine有多个Settings (参见下面的模型)。这些设置在机器内应具有唯一的顺序。这可以通过在模型的类中定义一个unique_together属性来完成:MetaSetting
unique_together = (('order', 'machine'), )
Run Code Online (Sandbox Code Playgroud)
但是,我使用内联表单集来Setting更新Machine. 假设我的表单集中有以下信息:
如果我要调换两个的顺序Setting:
并使用以下代码保存表单:
self.object = machine_form.save()
settings = setting_formset.save(commit=False)
for setting in settings:
setting.machine = self.object
setting.save()
Run Code Online (Sandbox Code Playgroud)
然后我收到一个唯一约束错误,因为我尝试使用 order=2 保存设置 1,但设置 2 仍然具有该顺序。我似乎无法找到解决这个问题的干净解决方案。我想保留unique_together约束以确保数据的正确性。我知道如何使用 Javascript 在前端解决这个问题,但我想检查我的模型/表单。循环遍历表单集行似乎是可能的,但是很难看?
class Machine(models.Model):
name = models.CharField(max_length=255)
class Setting(models.Model):
name = models.CharField(max_length=255)
machine = models.ForeignKey(Machine, on_delete=models.CASCADE)
order = models.PositiveSmallIntegerField()
Run Code Online (Sandbox Code Playgroud) 我们的想法是在worker.connectworker 上运行后台任务.执行任务时,我希望通过通知组将其进度发送到已连接的客户端.
问题:发送到通知组的消息会延迟,直到工作人员上的任务完成.因此:在延迟5秒(sleep(5))之后,客户端上同时出现"开始"和"停止"消息.我希望消息"开始",然后是5秒延迟,然后是"停止"消息.知道为什么不是这样吗?
我运行了以下三个进程:
daphne tests.asgi:channel_layerpython manage.py runworker --exclude-channel=worker.connectpython manage.py runworker --only-channel=worker.connect在views.py:
def run(request, pk):
Channel('worker.connect').send({'pk': pk})
return HttpResponse(status=200)
Run Code Online (Sandbox Code Playgroud)
在consumers.py:
def ws_connect(message):
Group('notifications').add(message.reply_channel)
message.reply_channel.send({"accept": True})
def worker_connect(message):
run_channel(message)
Run Code Online (Sandbox Code Playgroud)
在views.py:
def run_channel(message):
Group('notifications').send({'text': 'Start'})
sleep(5)
Group('notifications').send({'text': 'Stop'})
Run Code Online (Sandbox Code Playgroud)
routing.py
channel_routing = {
'websocket.connect': consumers.ws_connect,
'worker.connect': consumers.worker_connect,
}
Run Code Online (Sandbox Code Playgroud)