gpt4 book ai didi

Django ModelChoiceField 下拉框自定义填充

转载 作者:行者123 更新时间:2023-12-04 06:32:35 26 4
gpt4 key购买 nike

我有一个下拉框,该框由模型“选项”中过滤后的对象列表填充。目前,下拉列表显示每个选项的名称。我怎样才能让它显示同一张表中的另一个属性?

self.fields['name'] = forms.ModelChoiceField(queryset = Options.objects.filter(option_type = s), label = field_label, required=False) 

简单示例:下拉框当前显示汽车名称:“Camero、Nissan、Honda”我如何让它显示每辆车的颜色(“黑色,黑色,白色”)。请注意,颜色也是选项表中的一个字段。

最佳答案

您可以覆盖 label_from_instanceModelChoiceField 构建之后。

self.fields['name'] = forms.ModelChoiceField(queryset = Options.objects.filter(option_type = s), label = field_label, required=False)
self.fields['name'].label_from_instance = lambda obj: "{0} {1}".format(obj.name, obj.color)

根据评论更新只显示一次颜色:

class MyModelChoiceField(forms.ModelChoiceField):
def __init__(self, *args, **kwargs):
super(MyModelChoiceField, self).__init__(self, *args, **kwargs)
self.shown_colors = []


def label_from_instance(self, obj):
if obj.color not in self.shown_colors:
self.shown_colors.append(obj.color)
return "{0} {1}".format(obj.name, obj.color)
else:
return obj.name


self.fields['name'] = MyModelChoiceField(queryset = Options.objects.filter(option_type = s), label = field_label, required=False)

关于Django ModelChoiceField 下拉框自定义填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9657344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com