क्या मैं Django मॉडल में विदेशी कुंजी फ़ील्ड को वैकल्पिक बना सकता हूं


110

मेरे पास यह कोड है

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)

वहाँ यह हमेशा संभव नहीं है कि मेरे पास पुस्तकों के तीन मूल्य हैं। इसलिए कभी-कभी अगर मुझे विषय या स्थान, या प्रकाशक का पता नहीं होता है। फिर मैं उन्हें खाली रखना चाहता हूं

लेकिन अगर मेरे पास है तो मुझे चयन करने के लिए चयन बॉक्स की आवश्यकता है। क्या ऐसा संभव है

जवाबों:


195

ज़रूर, बस blank=True, null=Trueप्रत्येक क्षेत्र के लिए जोड़ें जिसे आप वैकल्पिक रूप से बने रहना चाहते हैं

subject = models.ForeignKey(subjects, blank=True, null=True)

6
क्या दोनों की जरूरत है? केवल अशक्त = सत्य का उपयोग करने से क्या होगा?
वार्ड

12
@WardC दोनों का कॉम्बो अक्सर इसलिए होता है क्योंकि आमतौर पर यदि आप किसी फ़ील्ड को अपने फॉर्म में खाली करने देते हैं, तो आपको उस फ़ील्ड के लिए NULL मानों को अनुमति देने के लिए अपने डेटाबेस की भी आवश्यकता होगी। इसका अपवाद चारफील्ड्स और टेक्स्टफील्ड्स हैं, जिन्हें Django में NULL के रूप में कभी भी सहेजा नहीं गया है। रिक्त मान DB में एक खाली स्ट्रिंग ('') के रूप में संग्रहीत होते हैं।
fang_dejavu

8
@Ward, दोनों की जरूरत नहीं है। यह सिर्फ उपयोग करने के लिए पर्याप्त है null=True
जाम रिसर

8
blank=Trueफॉर्म सत्यापन के लिए महत्वपूर्ण है। यह इस क्षेत्र में उपयोगकर्ता इनपुट के रूप में एक रिक्त स्ट्रिंग की अनुमति देगा। डेटाबेस कॉलम में NULL मान की null=Trueअनुमति देगा ।
सीजर

1
@cezar कमेंट ने मेरी जान बचाई! धन्यवाद
po5i
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.