遍历所有相关对象以更改值

时间:2018-10-29 13:35:00

标签: django

我正在尝试一种方法,可以迭代每个相关对象,并将“显示”值从“真”更改为“假”。

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)
   show = models.BooleanField(default=True)

我尝试了以下操作,但无法正常工作。

device = Device.objects
for host in device.all():
    Log.objects.filter(device=host).update(show=False)

但是我得到的'Log'对象没有属性'update'。有什么想法吗?

编辑:只是为了使其更加清楚我正在尝试做的事情。每个“设备”对象有多个“日志”对象。在特定视图上,我想将“显示”值设置为false,因为这意味着它们已全部读取,并且不再需要在我的网站的顶部栏中显示。

1 个答案:

答案 0 :(得分:0)

好的答案是这个。

selected_device = Device.objects.get(id.self.kwargs['device_id']
Log.objects.filter(device=selected_device).update(show=False)

我不知道为什么会这样,但是确实可以。我看不到如何遍历每个设备的每个日志,但是可以,所以我只是接受它的工作。