我有以下型号:
class A(models.Model):
pass # omitted for shortness
class B(models.Model):
pass
class AB(models.Model):
prop_a = models.ForeignKey('A')
prop_b = models.ForeignKey('B')
class X(models.Model):
prop_ab = models.ForeignKey('AB')
我想保存实例X
的模型,但不执行ab = AB.objects.get(prop_a=1, prop_b=2)
然后x.prop_ab = ab
。
我想要这样的事情(假设A
,B
和 AB
中的所有正确条目已经存在):
x = X()
x.prop_ab__prop_a__id = 1
x.prop_ab__prop_b__id = 2
x.save()
这样的事情可能吗? (上面的语法不起作用,我试过了)
答案 0 :(得分:0)
假设A
,B
和AB
中的所有相应条目已存在
你可以这样做:
x = X()
x.prop_ab.prop_a_id = 1
x.prop_ab.prop_b_id = 2
x.save()
我需要在foreach循环中对save()
模型执行一堆X
,因此我还需要在该foreach中获取相应的AB
条目。我希望通过消除get
上的AB
来减少查询次数
for x in X.objects.select_related('prop_ab'):
x.prop_ab.prop_a_id = 1
x.prop_ab.prop_b_id = 2
x.save()