我正在使用django 1.4.5,我需要在用户个人资料中显示一个名为'uuid'的字段
并不是pk。
我听说过ModelChoiceField的to_field_name,但显然这不起作用 django的核心内部错误。
是否有人设法显示不是pk字段的字段?
我试图使用此补丁:https://gist.github.com/drdaeman/5326761
但无济于事。
10倍
答案 0 :(得分:1)
从docs开始:
将调用模型的 unicode 方法来生成字符串 用于场地选择的对象的表示;至 提供自定义表示,子类ModelChoiceField和 覆盖label_from_instance。此方法将接收模型对象, 并应返回适合表示它的字符串。例如:
所以有两个选择:
# in your model
def __unicode__(self):
return unicode(self.uuid)
或者,如果你需要保持不同的字符串表示,那就更好了:
from django import forms
class UUIDChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return unicode(obj.uuid)
class FormWithUUIDChoiceField(forms.form):
field1 = UUIDChoiceField(queryset=..., ...)