我无法找到一种方法来识别django模板中字段的类型.我的解决方案是创建一个简单的过滤器来访问字段和窗口小部件类名.我已经包含了下面的代码,以防它对其他人有帮助.
有更好的方法吗?
## agency/tagutils/templatetags/fieldtags.py
###############################################################
from django import template
register = template.Library()
@register.filter(name='field_type')
def field_type(value):
return value.field.__class__.__name__
@register.filter(name='widget_type')
def widget_type(value):
return value.field.widget.__class__.__name__
## client/project/settings.py
###############################################################
INSTALLED_APPS = (
# ...
'agency.tagutils',
)
## client/project/templates/project/field_snippet.html
###############################################################
{% load fieldtags %}
<div class="field {{ field|field_type }} {{ field|widget_type }} {{ field.name }}">
{{ field.errors }}
<div class="form_label">
{{ field.label_tag }}
</div>
<div class="form_field">
{{ field }}
</div>
</div>
## sample output html
###############################################################
<div class="field CharField TextInput family_name">
<div class="form_label">
<label for="id_family_name">Family …Run Code Online (Sandbox Code Playgroud) 我正试图找到一种简单的方法来构建以澳大利亚格式显示日期的表格(年/月/日).这是我能找到的唯一方法.似乎应该有一个更好的解决方案.
注意事项:
我想,理想的解决方案是一个自动本地化的日期字段,但对我来说不起作用(strftime似乎不是unicode友好但我没有努力尝试)
我错过了什么吗?有更优雅的解决方案吗?这是一种强有力的方法吗?
from models import *
from django import forms
import datetime
class MyDateWidget(forms.TextInput):
def render(self, name, value, attrs=None):
if isinstance(value, datetime.date):
value=value.strftime("%d/%m/%Y")
return super(MyDateWidget, self).render(name, value, attrs)
class MyDateField(forms.DateField):
widget = MyDateWidget
def __init__(self, *args, **kwargs):
super(MyDateField, self).__init__(*args, **kwargs)
self.input_formats = ("%d/%m/%Y",)+(self.input_formats)
class ExampleForm(ModelForm):
class Meta:
model=MyModel
fields=('name', 'date_of_birth')
date_of_birth = MyDateField()
Run Code Online (Sandbox Code Playgroud)