2010-11-16 6 views
33

Salut Supposons que j'ai une classe simple modèle comme celui-ci:objet modèle Django avec la création de clé étrangère

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

Quand je suis en train de créer un objet TestModel je dois passer à pour créer une instance de l'objet TestModel2 il:

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

Cela se traduit par 2 requêtes à la base de données, je suppose, et j'ai une liste d'ID de clé étrangère que j'ai besoin de créer des objets avec.

Est-il possible de créer des objets avec des clés étrangères sans récupérer initialement les objets de clé étrangère?

+0

double possible de [Django: Définir la clé étrangère utilisant des nombres entiers] (http://stackoverflow.com/questions/2846029/django-set-foreign-key -using-integer) –

Répondre

48

Qu'est-ce que vous êtes après est:

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

Oui, vous avez raison, mais pour une raison quelconque, cela ne fonctionne pas avec get_or_create :( – dragoon

+0

@dragon: Je crois que TestModel2.objects.get (testkey_id = 1) ne fonctionne pas non plus –

+7

@Tomasz non, cela ne fonctionnera pas, mais 'TestModel2.objects.get (testkey__id = 1)', et 'TestModel2.objects.get_or_create (testkey__id = 1)' fonctionneront (notez le double trait de soulignement). augmentera 'MultipleObjectsReturned'. – sneeu

Questions connexes