2012-10-29 14 views
5

मान लीजिए मैं अपने मॉडल में एक क्षेत्र च के रूप में एक विदेशी कुंजी के रूप में इस प्रकार परिभाषित किया गया है प्रत्यय ForeignKey क्षेत्र:Django के साथ _ id

f = models.ForeignKey(AnotherModel) 

Django डेटाबेस सिंक करता है जब, DB में बनाया दायर f_id बुलाया जाएगा, स्वचालित रूप से प्रत्यय '_id' के साथ।

समस्या यह है कि मैं इस क्षेत्र में डीबी में इस क्षेत्र को परिभाषित करता हूं जैसा कि मैंने मॉडल में परिभाषित किया है, f इस मामले में। मैं उसे कैसे प्राप्त कर सकता हूं?

उत्तर

11

वैसे यह पता चलता है कि db_column नामक एक कीवर्ड तर्क है।

f = models.ForeignKey(AnotherModel, db_column='f') 

आगे संदर्भ: आप क्षेत्र डेटाबेस में 'म' कहा जाता है चाहते हैं, बस के रूप में सरल है

डेटाबेस स्तंभ का नाम इस क्षेत्र के लिए उपयोग करने के लिए। यदि यह नहीं दिया जाता है, तो Django क्षेत्र के नाम का उपयोग करेगा।

यदि आपका डेटाबेस कॉलम नाम एक SQL आरक्षित शब्द है, या इसमें वर्ण हैं जिन्हें पायथन वैरिएबल नामों में अनुमति नहीं है - विशेष रूप से, हाइफ़न - यह ठीक है। Django दृश्यों को दृश्यों के पीछे कॉलम और टेबल नाम उद्धृत करता है।

https://docs.djangoproject.com/en/dev/ref/models/fields/#db-column

+1

मुझे लगता है कि आप 'f' मैदान पर साथ' primary_key = TRUE' यह स्पष्ट है कि इस 'db_column' क्षेत्र विकल्प' AnotherModel' की जरूरत है सुनिश्चित करना चाहिए, शायद एक साथ। – dschulz

+0

धन्यवाद @dschulz लेकिन 'this 'db_column' फ़ील्ड विकल्प' से आपका मतलब क्या है 'अन्य मॉडेल' में? Cuz मुझे नहीं लगता कि डेटाबेस में 'f' क्या कहा जाता है,' अन्य मॉडेल 'के साथ कुछ भी करना है, क्या मैं सही हूँ? –

+1

ओह! मैं गलत था @ कैपेरिया, क्षमा करें। मेरा brainfart 'AnotherModel' में प्राथमिक कुंजी कॉलम के नाम के बारे में था। आप सही हैं, 'f' फ़ील्ड पर' db_column' फ़ील्ड विकल्प का उपयोग करना पर्याप्त होना चाहिए। – dschulz

संबंधित मुद्दे