具有外键创建的Django模型对象

时间:2010-11-16 14:36:23

标签: django django-models

您好 假设我有一个这样的简单模型类:

class TestModel(models.Model):
    testkey = models.ForeignKey(TestModel2)
    ...

当我创建一个TestModel对象时,我必须传递一个TestModel2对象的实例来创建它:

testkey =TestModel2.objects.get(id=...)
TestModel.objects.create(testkey=testkey)

这会导致我想对数据库进行2次查询,并且我有一个外键ID列表,我需要用它来创建对象。

是否可以在不初始检索外键对象的情况下创建具有外键的对象?

3 个答案:

答案 0 :(得分:68)

你所追求的是:

TestModel.objects.create(testkey_id=1)

答案 1 :(得分:0)

get_or_create中,它将失败。因此,使get_or_create在下面工作是解决方案:

TestModel.objects.get_or_create(testkey=TestModel2(id=1))

参考: https://code.djangoproject.com/ticket/13915

答案 2 :(得分:0)

在我的情况下,TestModel.objects.create(testkey__id=1)对我不起作用,因此我不得不用一个下划线而不是两个下划线

TestModel.objects.create(testkey_id=1)