使用双下划线直接更新 Django 中的外键字段?



我在Django中使用双下划线来过滤模型或从中获取值,像这样:

# filtering model
furthers = myModel.objects.filter(foreignKeyField__furtherField=value)
# getting values
furtherField = myModel.objects.get(id=10).values("foreignKeyField__furtherField")

但是当我尝试使用update()方法时,像这样带双下划线:

myModel.objects.filter(id=10).update("foreignKeyField__furtherField")

我得到一个错误:

django.core.exceptions.FieldDoesNotExist: myModel has no field named 'foreignKeyField__furtherField'

我查阅了关于此的文档,但既没有使用双下划线更新()方法的例子,也没有一个字,我不能这样使用它。所以我们可以说update()方法不能这样使用吗?

不能按这种方式更新但可以按其他方式更新

你应该像这样使用反向外键关系

ForeignModel.objects.filter(mymodel_set__id=10).update(foreign_key_field=some_value)

最新更新