तुम भी एक नया विजेट का उपयोग कर सकते हैं: मैं ऐसा किया तो यह है कि मैं एक विजेट है कि एक तारीख के एक पाठ प्रदर्शन बनाया है, और साथ एक गुप्त फ़ॉर्म हो सकता था इसमें एक ही तारीख है, इसलिए यह उपयोगकर्ता को दिखाई दे सकता है, लेकिन वे इसे बदल नहीं सकते हैं।
class DayLabelWidget(forms.Widget):
def render(self, name, value, attrs):
final_attrs = self.build_attrs(attrs, name=name)
if hasattr(self, 'initial'):
value = self.initial
if type(value) == type(u''):
value = datetime.date(*map(int, value.split('-')))
return mark_safe(
"%s" % value.strftime("%A (%d %b %Y)")
) + mark_safe(
"<input type='hidden' name='%s' value='%s' />" % (
name, value
)
)
def _has_changed(self, initial, data):
return False
फिर आप (widget=DayLabelWidget,)
के रूप में क्षेत्र में इस का उपयोग करें:
यहाँ (अभी भी परीक्षण/साफ किया जा करने के लिए) संस्करण एक प्रारंभिक है।
स्रोत
2009-07-20 07:08:01
धन्यवाद - मैं .label लेकिन .initial नहीं देखा था:
आप यह भी की तरह कुछ कर सकते हैं। उत्सुकता से, प्रारंभिक "फॉर्म के साथ काम करना" दस्तावेज़ में भी उल्लेख नहीं किया गया है। – ine
। प्रारंभिक केवल फॉर्म प्रस्तुत होने पर पहली बार काम करता है, है ना? उदाहरण के लिए, यदि त्रुटियां हैं और आप फॉर्म को दोबारा पेश करते हैं, तो मेरे अनुभव में कोई प्रारंभिक नहीं होगा। – dfrankow
Django शब्दावली में, यह केवल अनबाउंड रूपों के साथ काम करता है। क्या होगा यदि आप इसे अनबाउंड और बाध्य दोनों रूपों के साथ काम करना चाहते हैं? – dfrankow