मेरे पास एक मॉडलफॉर्म है जिसमें एक ऐसा क्षेत्र है जो मॉडल के लिए विदेशीकी मूल्य है जो 40,000 पंक्तियों के रूप में है। डिफ़ॉल्ट मॉडलफॉर्म 40,000 विकल्पों के साथ एक चयन बॉक्स बनाने का प्रयास करता है, जो कहने के लिए कि कम से कम आदर्श नहीं है। और भी अधिक तो जब इस मॉडलफॉर्म का उपयोग फॉर्मेट फैक्ट्री में किया जाता है!मॉडलफॉर्म के लिए raw_id_fields
व्यवस्थापक में, यह "raw_id_fields
" का उपयोग करके आसानी से टालने योग्य है, लेकिन ऐसा लगता है कि मॉडलफॉर्म समतुल्य नहीं है। मैं यह कैसे कर सकता हूँ?
class OpBaseForm(ModelForm):
base = forms.CharField()
class Meta:
model = OpBase
exclude = ['operation', 'routes']
extra = 0
raw_id_fields = ('base',) #does nothing
पहले बोल्ड लाइन विशाल बोझल selectbox बनाने नहीं कर काम करता है, लेकिन जब मैं इस फार्म के एक fieldset को बचाने की कोशिश, मैं त्रुटि मिलती है: "OpBase
यहाँ मेरी modelform है। आधार "एक" बेस "उदाहरण होना चाहिए। मॉडलफॉर्म को सहेजने के लिए, 'आधार' को आधार उदाहरण होना आवश्यक है। जाहिर है, बेस प्राथमिक कुंजी का स्ट्रिंग प्रस्तुति पर्याप्त नहीं है (कम से कम स्वचालित रूप से नहीं)। बेस उदाहरण के लिए, मेरे फॉर्म को दिए गए स्ट्रिंग को बदलने के लिए मुझे किसी प्रकार की तंत्र की आवश्यकता है। और इस तंत्र को एक फॉर्मेट में काम करना है। कोई विचार? यदि केवल raw_id_fields
काम करेगा, तो यह केक के रूप में आसान होगा। लेकिन जहां तक मैं कह सकता हूं, यह केवल व्यवस्थापक में उपलब्ध है।
बस स्पष्ट करने के लिए, raw_id_field विशेषता एक मॉडलएडमिन विशेषता है http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields मॉडलफॉर्म विशेषता नहीं है। –