Django ModelChoiceField显示特定字段而不是pk字段

时间:2013-06-10 13:30:33

标签: django django-models

我正在使用django 1.4.5,我需要在用户个人资料中显示一个名为'uuid'的字段

并不是pk。

我听说过ModelChoiceField的to_field_name,但显然这不起作用 django的核心内部错误。

是否有人设法显示不是pk字段的字段?

我试图使用此补丁:https://gist.github.com/drdaeman/5326761

但无济于事。

10倍

1 个答案:

答案 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=..., ...)