我有以下内容:
# model
TITLE_CHOICES = (
('mr', 'Mr.'),
('ms', 'Ms.'),
('mrs', 'Mrs.'),
('mis', 'Miss.'),
)
class Client(models.Model):
name_title = models.CharField(max_length=3, choices=TITLE_CHOICES)
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=40)
# form
class ClientForm(ModelForm):
class Meta:
class = Client
# view
def client_view(request):
client = Client.object.get(id=1)
clientForm = ClientForm(instance=client)
return render_to_response('client.html',{'client':client,
'clientForm':clientForm}, ...)
# client.html
...
我如何在对象client
中循环输出列名和值,同时确保如果值是choice
,它将打印出人类可读的选择值,而不是存储的值(get_title_display
)?在
为什么这不在Django做呢?(这不是一件普通的事吗?)在
如果我不能做到这一点,我必须静态地遍历每一列并使用get_title_display
,这意味着模型和模板之间没有分离,这意味着如果我更改模型,我必须手动更新模板。这不好
如果您想在默认情况下获得
get_FOO_display
,那么必须重写__getattribute__
方法。试试这样的方法:尝试类似于:
然后可以在模板中为给定对象循环get_字段
相关问题 更多 >
编程相关推荐