在Django ModelChoiceField中显示对象的多个值

时间:2017-05-05 16:01:04

标签: django forms menu

我有一个查询我的数据库的表单,如下所示:

class Pull(forms.Form):
    select = forms.ModelChoiceField(queryset=OrderEntry.objects.values_list
    ('val_a', 'val_b'), required=True)

默认情况下,它会显示值,但它真的很丑,看起来并不好玩。在网页上,它在下拉菜单中显示如下:

('A','B')
('C','D')

我希望它看起来像这样:

A    |    B
C    |    D

或者说,无论如何,用户很容易阅读。有没有办法实现这个目标? 谢谢!

1 个答案:

答案 0 :(得分:2)

子类ModelChoiceField并定义label_from_instance以返回所需的值。

class MyModelChoiceField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
        return "{} | {}".format(obj.val_a, obj.val_b)

现在使用标准查询集:

select = MyModelChoiceField(queryset=OrderEntry.objects.all(), required=True)