如何在选择 <select>
字段时更改 ForeignKey
字段中的显示文本?
我不仅需要显示 ForeignKey
的名称,还需要显示其父级的名称。
原文由 robos85 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在选择 <select>
字段时更改 ForeignKey
字段中的显示文本?
我不仅需要显示 ForeignKey
的名称,还需要显示其父级的名称。
原文由 robos85 发布,翻译遵循 CC BY-SA 4.0 许可协议
这样做的另一种方法(在更改查询集时很有用):
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['user'].queryset = User.objects.all()
self.fields['user'].label_from_instance = lambda obj: "%s %s" % (obj.last_name, obj.first_name)
'user'
是您要覆盖的字段的名称。该解决方案为您提供了一个优势:您也可以覆盖查询集(例如,您想要 User.objects.filter(username__startswith='a')
)
免责声明:在 http://markmail.org/message/t6lp7iqnpzvlt6qp 上找到并经过测试的解决方案。
原文由 alekwisnia 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
如果你希望它只在管理员中生效,而不是全局生效,那么你可以创建一个自定义
ModelChoiceField
子类,在自定义中使用它ModelForm
然后将相关的管理类设置为使用您定制的表格。使用一个示例,该示例具有 @Enrique 使用的Person
模型的外键: