क्या कोई नया मॉडल बनाते समय विदेशी कुंजी के लिए मॉडल उदाहरण में पास करने का कोई तरीका नहीं है? मान लीजिए कि मैं निम्नलिखित मॉडल हैं:Django ForeignKey इंस्टेंस बनाम रॉ आईडी
class Foo(models.Model):
description = models.CharField(max_length=100)
class Meta:
db_table = u'foo'
class Bar(models.Model):
info = models.CharField(max_length=100)
foo = models.ForeignKey('Foo')
class Meta:
db_table = u'bar'
बाद में एक पोस्ट अनुरोध एक दृश्य करने के लिए आता है - मैं एक foo रिकॉर्ड की आईडी को जानते हैं और सिर्फ बार तालिका में एक रिकॉर्ड सम्मिलित करना चाहते हैं।
अगर मैं करता हूँ: ":"
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
मैं एक ValueError कह 546456487466L "आवंटित नहीं कर सकते" मिलता है। इसलिए "एक बस हो" फू "उदाहरण के Bar.foo
, मैं समझ गया। .. यह चाहता है कि मुझे फू मॉडल का वास्तविक उदाहरण मिल जाए। मैं समझता हूं कि मैं सिर्फ फू पर पहुंच सकता हूं और फिर इसे पास कर सकता हूं। लेकिन, ऐसा लगता है कि इस कार्यक्षमता को ओवरराइड करने का कोई तरीका होना चाहिए। मैंने किया है कुछ googling और दस्तावेज़ों को पढ़ना, और व्यवस्थापक में raw_id_fields मूल विचार प्रतीत होता है। (जो कहने के लिए, यहां कच्चे आईडी की अनुमति दें)। लेकिन, विदेशी विकल्प फ़ील्ड पर यह विकल्प न देखें।
आईडी प्राप्त करने के लिए ऑब्जेक्ट प्राप्त करने के लिए डेटाबेस में एक राउंड ट्रिप करना बहुत अक्षम है (जो मेरे पास पहले से है)। मैं समझता हूं कि राउंड ट्रिप करने से यह मान्य होता है कि आईडी डेटाबेस में मौजूद है। लेकिन, हे ... यही कारण है कि मैं एक आरडीबीएमएस का उपयोग कर रहा हूं और पहले स्थान पर विदेशी कुंजी रखता हूं।
धन्यवाद
ग्रेट, क्लासिक एसओ-आईश सवाल। – trpt4him