2010-11-16 21 views
33

Hola Supongamos que tengo una clase simple modelo así:Django objeto de modelo con la creación de clave externa

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

Cuando estoy creando un objeto TestModel tengo que pasar a ella una instancia del objeto TestModel2 para crear que:

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

Esto se traduce en 2 consultas a la base de datos supongo, y tengo una lista de ID de clave externa que necesito para crear objetos con.

¿Es posible crear objetos con claves externas sin recuperar inicialmente los objetos de la clave externa?

+0

Posible duplicado de [Django:? Establecer clave externa usando entero] (http://stackoverflow.com/questions/2846029/django-set-foreign-key -using-integer) –

Respuesta

48

lo que buscas es:

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

Sí, tienes razón, pero por alguna razón no funciona con get_or_create :( – dragoon

+0

@dragon: Creo que TestModel2.objects.get (testkey_id = 1) tampoco funciona. –

+7

@Tomasz no, eso no funcionará, pero 'TestModel2.objects.get (testkey__id = 1)', y 'TestModel2.objects.get_or_create (testkey__id = 1)' funcionarán (tenga en cuenta el doble guión bajo). Es muy posible que estos levantará 'MultipleObjectsReturned'. – sneeu

Cuestiones relacionadas