使用外键向模型添加新对象

时间:2018-10-29 11:44:29

标签: django

所以这似乎是以前问过的,但对我而言,我无法获得任何可行的解决方案。

我有两个类,设备和日志。每个设备有很多日志,我希望能够向Log对象添加新项目。

class Device(models.Models):
    name = models.Charfield(max_length=100)
    type = models.Charfield(max_length=100)

class Log(models.Modles):
   device = models.ForeignKey(Device, related_name='msgs', on_delete=models.CASCADE)
   log = models.Charfield(max_length=100)
   date_time = models.DateTimeField(auto_now=True)

我一直在尝试这样的事情:

device = Device.objects.filter(name=hostname)
device.msgs.add(log=new_log_msg)

但是我尝试的任何方法都没有用。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

将设备对象获取为

device = Device.objects.filter(name=hostname) # If hostname not found throw exception

用于创建新日志

log = Log.objects.create(device=device, log='')

答案 1 :(得分:1)

您需要一个设备实例,但是filter总是给出一个查询集。您应该使用get

device = Device.objects.get(name=hostname)
device.msgs.add(log=new_log_msg)

答案 2 :(得分:0)

在查询集中使用get而不是filter来创建和更新始终初始化实例的

device = Device.objects.get(name=hostname)
device.msgs.add(log=new_log_msg)

用于在日志中添加数据

Log.objects.create(device=device, log='')

device=device是外键。