使用ID而不是实例来创建具有外键的新对象

时间:2011-12-01 13:09:50

标签: python django foreign-keys

我想用三个外键创建一个新的Django ORM对象。我已经获得了外国行的ID,我的意思是 - 这就是我需要填充新行中的外键列,对吗?但是,我似乎无法创建新行而不会使用DB三次来实例化这些ID中的对象。

所以我需要做的是:

foreign_object = models.ForeignObject.get(pk=foreign_object_id)
a = models.Object1.get_or_create(f = foreign_object)

我想做什么:

a = models.Object1.get_or_create(f_id = foreign_object_id)
然而,

f_id不是Django认可的字段。如果我只是将foreign_object_id分配给f(我想我记得这在某些情况下有效),Django抱怨它想要一个ForeignObject实例而不是int。

有什么办法吗?

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要使用双下划线符号

例如

a = models.Object1.get_or_create(f__pk=foreign_object_id)