2010-11-16 2 views
33

Привет Предположим, у меня есть простой класс модели, как это:Django модели объекта с ключом создания внешней

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

Когда я создаю объект TestModel я должен передать ему экземпляр объекта TestModel2 для создания это:

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

Это приводит к 2-запросов к базе данных, я полагаю, и у меня есть список иностранных ключевых идентификаторов, которые я должен создавать объекты с.

Возможно ли создание объектов с внешними ключами без первоначального извлечения объектов внешнего ключа?

+0

Возможный дубликат [Джанго: Настройка внешнего ключа с помощью целого числа] (http://stackoverflow.com/questions/2846029/django-set-foreign-key -using-integer) –

ответ

48

Что вы после:

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

Да, вы правы, но почему-то это не работает с get_or_create :( – dragoon

+0

@dragon: Я считаю, что TestModel2.objects.get (testkey_id = 1) тоже не работает. –

+7

@Tomasz Нет, это не сработает, но 'TestModel2.objects.get (testkey__id = 1)' и 'TestModel2.objects.get_or_create (testkey__id = 1)' будет работать (обратите внимание на двойное подчеркивание). Это очень возможно, хотя эти будет вызывать 'MultipleObjectsReturned'. – sneeu