2011-08-15 5 views
10

list_editableModelAdmin में उपयोग करते समय, संपादन योग्य फ़ील्ड के लिए उपयोग किए गए विजेट को बदलने का कोई तरीका है? मुझे दस्तावेज़ीकरण में कुछ भी नहीं मिला। ऐसा लगता है कि यह कुछ ऐसा होगा जो आप अनुकूलित करने में सक्षम होंगे।list_editable और विजेट

+0

किसी के भी सोचने के मामले में, प्रश्न क्षेत्र फ़ील्ड डेटटाइम फ़ील्ड है, और डिफ़ॉल्ट डेट टाइम विजेट जो डीजेंगो उपयोग करता है, बहुत सारी जगह लेता है और वास्तव में ग्रिड प्रारूप में काम नहीं करता है। मैं इसे एक साधारण 'टेक्स्ट इनपुट' विजेट से बदलना चाहता हूं। –

उत्तर

17

अवहेलना अपने ModelAdmin वर्ग के get_changelist_form विधि, इसलिए जैसे:

def get_changelist_form(self, request, **kwargs): 
    kwargs.setdefault('form', MyAdminForm) 
    return super(MyModelAdmin, self).get_changelist_form(request, **kwargs) 

और अलग से परिभाषित संशोधित MyAdminForm:

class MyAdminForm(forms.ModelForm): 
    class Meta: 
    model = MyModel 
    my_field = forms.DateField(widget=widgets.AdminDateWidget()) 

यह एक उदाहरण मात्र है जो my_field कर देगा के लिए एक विजेट का प्रतिनिधित्व करती है केवल तारीख (समय के बिना)। यह सूची दृश्य में बहुत बेहतर दिखता है।

from django import forms 

class OfferForm(forms.ModelForm): 
    class Meta: 
     model = Offer 
     widgets = { 
      'description' : forms.Textarea(
       attrs={ 
        'cols': '20', 
       } 
      ) 
     } 

कहाँ widgets dict dict जिसका कुंजी है:

+1

आप 'get_changelist_form'' में सुपर() का उपयोग क्यों करते हैं? प्रलेखन में वे केवल '' वापसी मॉडलफॉर्म 'का उपयोग करते हैं https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_changelist_form ... – lechup

+0

मैंने अभी देखा है , यह 2 साल का सवाल है :) – lechup

7

आप विजेट केवल (django 1.5 पर परीक्षण) बदलना चाहते हैं इस वाक्य विन्यास का उपयोग करने के लिए (आप लेबल ect निर्धारित करने की आवश्यकता नहीं होगी।) है फ़ील्ड और मानों के नाम वे विजेट्स का प्रतिनिधित्व करते हैं जिन्हें आप ओवरराइड करना चाहते हैं।

रूप documentation Django के लिए राज्यों 1.5+ इसकी भी संभव करने के लिए बस:

class OfferAdmin(admin.ModelAdmin): 
    def get_changelist_form(self, request, **kwargs): 
     return OfferForm 
किसी भी super() और kwargs करतब दिखाने के बिना

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