首页 > 解决方案 > “UpdateQuery”对象没有属性“get_field”错误

问题描述

我下面的代码有问题吗?目的是当用户更新场地时,链接到场地的所有事件都被标记为已修改。我得到的错误是

“'UpdateQuery' 对象没有属性 'get_field' 错误”。

真正奇怪的是,我相信该代码在一个月前已经过测试并可以正常工作,但它突然停止工作。

我的代码:

def save(self, *args, **kwargs):
   super(Venue, self).save(*args, **kwargs)  # Call the "real" save() method.      
   Event.objects.all().filter(venue=self).update(modified=timezone.now())

在 subqueries.py 中抛出此错误:

def add_update_values(self, values):
     """
     Convert a dictionary of field name to value mappings into an update
     query. This is the entry point for the public update() method on
     querysets.
     """
     values_seq = []
     for name, val in six.iteritems(values):
        field = self.get_field(name)

标签: pythondjango

解决方案


我不断收到上述错误,但这种解决方法是手动迭代相关字段并为每个有效的字段调用 save。在这种情况下,修改后的属性是自动更新的,所以我只需要调用 save 即可。出于同样的原因,我可以更改我想要的任何字段,然后调用 save,它也应该可以工作。(这并不理想,但它解决了我的问题)

related_events = Event.objects.filter(venue=self)
        for event in related_events:  # Trigger an update on related events. This will bump the modified timestamp
            # Modify the event here
            event.save()

推荐阅读