Ada*_*dam 34 python django django-forms django-authentication
我在我的Django应用程序(不是管理员)中有一个表单,允许工作人员从下拉列表中选择用户.
forms.ModelChoiceField(queryset = User.objects.filter(is_staff=False), required = False)
Run Code Online (Sandbox Code Playgroud)
问题是下拉列表按用户名显示用户,而我宁愿从user.get_full_name()显示其全名,并且只有在不可用时才使用用户名.我只是真的需要在这个页面上进行此更改,在管理员等其他地方,我不在乎它是否使用用户名.
有没有办法可以做到这一点?
谢谢!
Bar*_*tek 64
您可以设置一个自定义ModelChoiceField,返回您想要的任何标签.
在fields.py或适用的地方放置类似的内容.
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
Run Code Online (Sandbox Code Playgroud)
然后在创建表单时,只需使用该字段即可
UserModelChoiceField(queryset=User.objects.filter(is_staff=False), required = False)
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到
Ker*_*ge0 21
使用ModelForm时,我发现以下最有用的内容,因此我不必重新定义我的查询集 - 特别是因为我在模型定义中使用了limit_choices_to:
class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['user'].label_from_instance = lambda obj: "%s" % obj.get_full_name()
Run Code Online (Sandbox Code Playgroud)
从这个答案定制/sf/answers/546407711/
| 归档时间: |
|
| 查看次数: |
15554 次 |
| 最近记录: |