【发布时间】:2022-01-21 19:03:14
【问题描述】:
我正在尝试根据外键上的字段值进行条件更新。示例:
Model Kid: id, parent (a foreign key to Parent), has_rich_parent
Model Parent: id, income
假设我有一个查询集 A。我想根据孩子的父级 update 中的 age 的值更新 A 中每个项目的 has_guardian。我想做的是
queryset_of_kids.update(
has_rich_parent=Case(
When(parent__income__gte=10, then=True)
default=False
)
)
但这给了我一个错误Joined field references are not permitted in this query。我将其理解为 updates 中不允许加入字段/追求外键关系。
我想知道是否还有其他方法可以完成同样的事情,例如在一次更新调用中更新此查询集?我的情况还有几个我想验证的字段,而不仅仅是income,所以如果我尝试过滤然后更新,调用的数量将与我想要过滤的参数数量成线性关系/更新。
提前致谢!
【问题讨论】:
-
请更新问题
queryset_of_kids -
试试
When(Greatest(F('parent__income'), 9), then=True) default=False别忘了加from django.db.models import F和from django.db.models.functions import Greatest
标签: django django-models