所以这似乎是以前问过的,但对我而言,我无法获得任何可行的解决方案。
我有两个类,设备和日志。每个设备有很多日志,我希望能够向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)
但是我尝试的任何方法都没有用。有什么想法吗?
答案 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
是外键。