Django ModelMultipleChoiceField和CheckboxSelectMultiple - 显示来自queryset的额外数据

时间:2016-06-16 11:56:41

标签: django django-forms

除了django表格ModelMultipleChoiceField中的键值对之外,是否可以访问其他数据?

我的目标是生成一个输入(复选框)及其名称(值)和额外信息,如价格,附加说明和可能的其他数据。

我使用django-crispy-forms,我很乐意通过创建模板将其保留在其中。

修改

我在考虑使用像

这样的东西
<input value="{{ object.id }}"> 
{{object.name}} - {{object.description}} {{object.price}}

1 个答案:

答案 0 :(得分:1)

是的,有一种方法称为%s,它接受​​label_from_instance作为参数并返回obj表示。

您可以从ModelMultipleChoiceField继承并覆盖它,或在表单创建期间动态更改它。以下是一些例子:

继承

obj

或覆盖

from django.forms import ModelMultipleChoiceField

class MyModelMultipleChoiceField(ModelMultipleChoiceField):
    def label_from_instance(self, obj):
        return "My Object #%i" % obj.id

#and then you have to use it in your form:
class MyForm(forms.ModelForm):
    my_multi_choice_field = MyModelMultipleChoiceField(queryset=...)