用动态列表下拉Django

时间:2018-04-27 06:56:22

标签: python django django-forms django-views

我正试图从动态列表中提供Django的下拉菜单。例如,每次运行模型时,都应该采用数据集的列名称,这些名称应显示在下拉菜单中。

以前,我使用过Django的文本框,看起来像这样:

  

Forms.py

    from django import forms

    class LinearForm(forms.Form):

        Column_name1 = forms.CharField()

我看到forms.ModelMultipleChoiceField()forms.ChoiceField()将选项作为值列表,因为我需要从Views.py生成动态列表。我该如何处理?

1 个答案:

答案 0 :(得分:0)

我们可以覆盖表单__init__方法来执行此操作

class LeniarForm(forms.Form):

    choice_field = forms.ChoiceField(choices=[])

    def __init__(self, *args, **kwargs):
        choices = kwargs.pop('choices', [])
        super(LeniarForm, self).__init__(*args, **kwargs)
        self.fields['choice_field'].choices = choices
  

views.py

from .forms import LeniarForm

def my_view(request):
    # ....
    dynamic_choices = (('a', 'a'), ('b', 'b'))
    f = LeniarForm(choices=dynamic_choices)
    # ....