2010-11-16 18 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

की संभावित डुप्लिकेट [Django: विदेशी कुंजी सेट पूर्णांक का उपयोग कर] (http://stackoverflow.com/questions/2846029/django-set-foreign-key -using-integer) –

उत्तर

48

क्या आप के बाद कर रहे हैं है:

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

हाँ, आप सही हैं, लेकिन किसी कारण से यह get_or_create के साथ काम नहीं करता है :( – dragoon

+0

@ ड्रैगन: मेरा मानना ​​है कि TestModel2.objects.get (testkey_id = 1) या तो काम नहीं करता है। –

+7

@Tomasz नहीं, यह काम नहीं करेगा, लेकिन 'TestModel2.objects.get (testkey__id = 1) ', और' TestModel2.objects.get_or_create (testkey__id = 1)' काम करेगा (डबल अंडरस्कोर नोट करें)। यह बहुत संभव है हालांकि ये 'एकाधिक ऑब्जेक्ट्स रिटर्न' बढ़ाएगा। – sneeu