मेरे पास एक कस्टम टैगफिल्ड फॉर्म फ़ील्ड है।Django व्यवस्थापक - एक कस्टम फॉर्म फ़ील्ड के विजेट को ओवरराइड करना
class TagField(forms.CharField):
def __init__(self, *args, **kwargs):
super(TagField, self).__init__(*args, **kwargs)
self.widget = forms.TextInput(attrs={'class':'tag_field'})
जैसा ऊपर देखा गया है, यह टेक्स्ट इनपुट फ़ॉर्म फ़ील्ड विजेट का उपयोग करता है। लेकिन व्यवस्थापक में मैं इसे Textarea विजेट का उपयोग करके प्रदर्शित करना चाहता हूं। इसके लिए, formfield_overrides
हुक है लेकिन यह इस मामले के लिए काम नहीं करता है।
व्यवस्थापक घोषणा है:
class ProductAdmin(admin.ModelAdmin):
...
formfield_overrides = {
TagField: {'widget': admin.widgets.AdminTextareaWidget},
}
यह फार्म क्षेत्र विजेट पर कोई प्रभाव नहीं है और अभी भी एक tags
TextInput विजेट के साथ गाया जाता है।
किसी भी मदद की बहुत सराहना की जाती है। इस तरह अपने क्षेत्र बदलने के लिए
OMAT
यह मेरे लिए काम नहीं करता है, आपको कक्षा के बजाय विजेट का एक उदाहरण पास करने की आवश्यकता है। उदाहरण पूरी तरह से काम किया, हालांकि। –
मैं आमतौर पर admin.py में कस्टम व्यवस्थापक फॉर्म बनाउंगा और उन्हें form.py के साथ मिश्रित नहीं करूंगा। इससे अन्य डेवलपर्स के लिए कोई भी मिश्रण कम हो जाता है और सभी एडमिन विशिष्ट आइटम एक ही .py फ़ाइल में रखता है। – MaestroFJP
अच्छा बिंदु @MestroFJP। मैं बस अपने नए कोड में कर रहा हूं। या, यदि आपके पास वास्तव में जटिल रूप हैं, और उनमें से बहुत सारे हैं, तो फॉर्म/admin.py का एक सबमिशन है। –