我的Django应用程序(不是admin)中有一个表单,允许工作人员从下拉列表中 Select 用户.

forms.ModelChoiceField(queryset = User.objects.filter(is_staff=False), required = False)

问题是,下拉菜单按用户名显示用户,而我更希望它显示user.get_full_name()中的用户全名,并且仅在用户名不可用时才使用用户名.我真的只需要这个页面上的更改,在其他地方,如管理,我不在乎它是否使用用户名.

有什么办法可以让我这么做吗?

谢谢

推荐答案

您可以设置一个自定义ModelChoiceField,它将返回您想要的任何标签.

将类似这样的内容放入fields.py或任何适用的位置.

class UserModelChoiceField(ModelChoiceField):
    def label_from_instance(self, obj):
         return obj.get_full_name()

然后,在创建表单时,只需使用该字段

 UserModelChoiceField(queryset=User.objects.filter(is_staff=False), required = False)

有关更多信息,请访问网站here

Django相关问答推荐

Django动态页面.为什么我的代码不工作?

执行官/start.sh:没有这样的文件或目录

django-filter compose 过滤的 url

错误``Forbidden (403) CSRF 验证失败.请求中止.``` 当try 登录管理员时

Django 隐藏特定人员的媒体文件链接

Django:使用相同的外键在不同的应用程序中 Select 多个列

Django中的多对多关系?

如何让 Django 在模板更改时重新启动运行服务器?

如果上下文中缺少变量,如何使 Django 模板引发错误

django 复数模板

Heroku - 在 Django 应用程序中处理静态文件

Django 模板和变量属性

django:manytomanyfield 和 through 如何出现在 admin 中?

settings.DATABASES 配置不正确使用 django 1.4 执行 syncdb 时出错

如何使用查询参数构造 Django 反向/url?

UpdateView 中的success_url,基于传递的值

如何动态访问 Django 模型字段详细名称?

AttributeError:ManyRelatedManager对象没有add属性?

django rest 框架:从序列化程序 validate() 方法设置字段级错误

Django的不区分大小写的网址?