2010-11-16 70 views
33

嗨 假设我有这样一个简单的模型类:与外键创建的Django模型对象

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

当我创建一个TestModel对象我要传递给它的TestModel2对象的实例来创建它:

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

这导致2查询数据库我想,我有一个外键ID列表,我需要创建对象。

是否可以使用外键创建对象,而无需最初检索外键对象?

+0

的可能的复制[Django的:设置外键使用整数(http://stackoverflow.com/questions/2846029/django-set-foreign-key - 使用整数) – 2016-05-25 15:05:08

回答

48

什么你是后:

TestModel.objects.create(testkey_id=1) 
+1

是的,你是对的,但由于某种原因它不适用于get_or_create :( – dragoon 2010-11-16 15:01:22

+0

@dragon:我相信TestModel2.objects.get(testkey_id = 1)也不起作用 – 2010-11-16 20:30:16

+7

@Tomasz不,这是行不通的,但是'TestModel2.objects.get(testkey__id = 1)'和'TestModel2.objects.get_or_create(testkey__id = 1)'将会工作(注意双下划线)。将会引发'MultipleObjectsReturned'。 – sneeu 2010-11-16 22:19:09