Django:ModelMultipleChoiceField 显示描述与对象

0 投票
1 回答
688 浏览
提问于 2025-04-16 11:07

我想把ModelMultipleChoiceFields显示成多选框。现在虽然能显示出复选框,但上面显示的是对象本身。我希望能显示对象的描述,这样用户就知道自己在选择什么了。

我该怎么遍历foodstyles来提取这些数据呢?我试过这样做,但出现了一个TemplateSyntaxError的错误,提示“在渲染时捕获到AttributeError:'generator'对象没有'all'属性”。

foodstyles = forms.ModelMultipleChoiceField(
    label=_("Types of food you like"),
    widget=forms.CheckboxSelectMultiple, queryset=FoodStyle.objects.all(),
    required=True)

def __init__(self, *args, **kwargs):
    super(ProfileForm, self).__init__(*args, **kwargs)

    foodstyles = FoodStyle.objects.all()
    self.fields['foodstyles'].queryset = (
        (r.description) for r in foodstyles)

1 个回答

3

听起来你需要在你的模型对象上实现一个叫unicode(self)的功能,然后返回你想在表单中显示的字符串。

撰写回答