小编Jor*_*cht的帖子

从选择器获取Chart js对象

创建像这样的图表(使用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)

如何获得图表对象?

先感谢您!

jquery chart.js

7
推荐指数
3
解决办法
9316
查看次数

MapStruct:将嵌套对象属性映射到属性

假设我有以下对象:

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.*属性映射到相应的*属性?

java mapstruct

7
推荐指数
1
解决办法
3568
查看次数

使用 Django 表单集保存具有唯一属性的多个对象

TL;DR:如何使用表单集保存/验证具有唯一属性的多个对象?

假设我有一个Machine有多个Settings (参见下面的模型)。这些设置在机器内应具有唯一的顺序。这可以通过在模型的类中定义一个unique_together属性来完成:MetaSetting

unique_together = (('order', 'machine'), )
Run Code Online (Sandbox Code Playgroud)

但是,我使用内联表单集来Setting更新Machine. 假设我的表单集中有以下信息:

  • 设置1:机器=1;订单=1
  • 设置2:机器=1;订单=2

如果我要调换两个的顺序Setting

  • 设置1:机器=1;订单=2
  • 设置2:机器=1;订单=1

并使用以下代码保存表单:

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)

django django-forms unique-constraint

5
推荐指数
1
解决办法
1827
查看次数

如何确保立即发送Django频道消息?

我们的想法是在worker.connectworker 上运行后台任务.执行任务时,我希望通过通知组将其进度发送到已连接的客户端.

问题:发送到通知组的消息会延迟,直到工作人员上的任务完成.因此:在延迟5秒(sleep(5))之后,客户端上同时出现"开始"和"停止"消息.我希望消息"开始",然后是5秒延迟,然后是"停止"消息.知道为什么不是这样吗?

我运行了以下三个进程:

  • daphne tests.asgi:channel_layer
  • python manage.py runworker --exclude-channel=worker.connect
  • python 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)

django django-channels

3
推荐指数
1
解决办法
2105
查看次数