मुझे दस्तावेज़ों में यह नहीं मिला, लेकिन लगता है कि यह संभव होना चाहिए। मैं विशेष रूप से ClearableFileInput विजेट के बारे में बात कर रहा हूँ। Django 1.2.6 में एक परियोजना से मैं इस फार्म है:मैं Django में विजेट के HTML आउटपुट को कैसे अनुकूलित कर सकता हूं?
# the profile picture upload form
class ProfileImageUploadForm(forms.ModelForm):
"""
simple form for uploading an image. only a filefield is provided
"""
delete = forms.BooleanField(required=False,widget=forms.CheckboxInput())
def save(self):
# some stuff here to check if "delete" is checked
# and then delete the file
# 8 lines
def is_valid(self):
# some more stuff here to make the form valid
# allthough the file input field is empty
# another 8 lines
class Meta:
model = SocialUserProfile
fields = ('image',)
जो मैं तो इस टेम्पलेट कोड का उपयोग कर गाया:
<form action="/profile/edit/" method="post" enctype="multipart/form-data">
Delete your image:
<label> {{ upload_form.delete }} Ok, delete </label>
<button name="delete_image" type="submit" value="Save">Delete Image</button>
Or upload a new image:
{{ upload_form.image }}
<button name="upload_image" type="submit" value="Save">Start Upload</button>
{% csrf_token %}
</form>
के रूप में Django 1.3.1 अब ClearableFileInput डिफ़ॉल्ट विजेट के रूप में उपयोग करता है, मैं 'यकीन है कि मैं अपने form.save के 16 लाइनों को छोड़ सकते हैं और सिर्फ इसलिए की तरह प्रपत्र कोड को छोटा हूँ:
# the profile picture upload form
class ProfileImageUploadForm(forms.ModelForm):
"""
simple form for uploading an image. only a filefield is provided
"""
class Meta:
model = SocialUserProfile
fields = ('image',)
जो मुझे अच्छा लग रहा है मैं कम अनुकूलित formcode है देना होगा, और वें पर भरोसा कर सकते ई Django बिल्टिन।
मैं निश्चित रूप से एचटीएमएल आउटपुट को पहले जैसा रखना चाहता हूं। जब मौजूदा टेम्पलेट कोड का उपयोग करें, तो "वर्तमान में: somefilename.png" जैसी चीजें उन स्थानों पर पॉप अप करें जहां मैं उन्हें नहीं चाहता हूं।
फॉर्मफील्ड को आगे विभाजित करना, जैसे {{ upload_form.image.file }}
काम नहीं कर रहा है। मेरे दिमाग में आने वाली अगली बात एक कस्टम विजेट लिखना था। जो संभवतः जितना संभव हो उतना अनुकूलित कोड हटाने के मेरे प्रयासों के खिलाफ काम करेगा।
कोई भी विचार इस परिदृश्य में क्या करना सबसे आसान बात होगी?
संक्षिप्त उत्तर: चरण 1: विजेट वर्ग कदम 2 का विस्तार: के लिए अपने क्षेत्र नोट विजेट ओवरराइड: यदि आप चाहते django फॉर्म की '__init__' विधि में चरण 1 में बनाए गए उप-वर्गीकृत विजेट का उपयोग करने के लिए। अगर आपको उदाहरण की ज़रूरत है, तो मुझे बताएं और मैं इसे दोपहर मार दूंगा। –
नवीनतम मैं विजेट के द्वारा उपयोग किए गए टेम्पलेट को ओवरराइड करने के बारे में सोच रहा था। इस दोपहर में आप ट्यूनिंग की सराहना करेंगे (आप स्पष्ट रूप से मेरे मुकाबले एक अलग महाद्वीप पर हैं, क्योंकि यहां यह पहले से ही है 16:15: डी) – marue
हाँ जब मैं काम बंद कर देता हूं, बीमार आपको एक उदाहरण शूट करता है। ~ 5 या तो घंटे –