Вы также можете использовать новый виджет: я сделал это, чтобы у меня был виджет, который создавал текстовое отображение даты, и скрытую форму с такой же датой в нем, чтобы она могла быть видна пользователю, но они не могут это изменить.
Вот начальная (все еще тестируемая / подлежащая очистке) версия:
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,)
.