相关型号的批量更新

时间:2015-05-27 05:18:33

标签: python django

我有3个型号:

class Model1:
  ...

class Model2:
  ...
  m1 = ForeignKey(Model1)
  var2 = ....

class Model3:
  ...
  m2 = ForeignKey(Model2)
  var3

我正在尝试更新Model3:

Model1.objects.get(...).model2_set.filter(....).update(... How to update all model3_set__var3? ....???)

2 个答案:

答案 0 :(得分:2)

您可以使用关系:

Model3.objects.filter(m2__m2var=1, m2__m1__m1val=1).update(...)

__用于关系,您可以使用外键连接进行表连接,这样您就可以Model2过滤m2__<m2_field>上的字段,并过滤Model1上的字段m2__m1__<m1_field>

Read the related docs

答案 1 :(得分:0)

你可以尝试:

Model3.objects.filter(model1__id=x).update(var3=y)

我希望Django能够自动处理关系,尽管我没有在第二级关系中测试过这种关系。

有关Django documentation: Lookups that span relationships

的详情