0
我有以下型号:保存使用第二级相关领域的PK模型在Django
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()
是这样的可能吗? (上面的语法是不行的,我试过)
的
get
你能解释一下你正在努力实现这个东西,以尽量减少查询我的号码吗? –我需要在foreach循环中做一堆'X'模型的'save()',所以我还需要在那个foreach中获得'AB'条目。我想通过消除'AB'上的'get'来减少查询次数。 –
Afaik这是不可能的,类X需要类AB的PK,所以你必须做查询查找来确定PK。但是,如果您已经知道PK,那么您可以简单地执行x.prop_ab_id = 1.但是您必须考虑您尝试实现的优化可能不是非常有用,因为插入/更新操作比选择查询要重得多。 – Peter