这里有一个菜鸟问题。
在阅读文档后,我发现使用外键引用保存模型需要保存被引用对象的模型实例。
a = ModelA.objects.get(pk=1)
b = ModelB(foreignk = a,.....)
b.save()
在这种情况下,实际执行了多少个查询?如果我有参考模型的pk,这是正确的方法吗?
答案 0 :(得分:3)
每个ForeignKey
字段也会导致隐藏字段具有相同的名称,但附加了_id
。将外国PK分配给该字段就足够了。
b = ModelB(...)
b.foreignk_id = 1
b.save()
答案 1 :(得分:1)
如果使用解决方案,则有2个查询:一个用于在将ModelA作为参数传递给ModelB时评估ModelA的查询集,第二个用于调用save()。
使用Ignacios解决方案,保存时只有一个。