Как отобразить выпадающий список в форме Django?

У меня возникла проблема с отображением выпадающего списка, который является полевой частью формы Django.

Связанное поле модели определяется следующим образом:

class Company(models.Model):
    """
    Company informations
    - Detailed information for display purposes in the application
      but also used in documents built and sent by the application
    - Mail information to be able to send emails
    """
    company_name = models.CharField("nom", max_length=200)
    comp_slug = models.SlugField("slug")
    rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")]   # Default management rule
    rule = models.CharField(
        "mode de scrutin", max_length=5, choices=rules, default="MAJ"
    )

В форме нет выделенных рулей, даже если попытаться их добавить (сохраняется как комментарий в коде ниже):

class CompanyForm(forms.ModelForm):
    company_name = forms.CharField(label="Société", disabled=True)
    # rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")]
    # rule = forms.ChoiceField(label="Mode de scrutin", choices=rules)

    class Meta:
        model = Company
        exclude = []

Здесь:

@user_passes_test(lambda u: u.is_superuser or u.usercomp.is_admin)
def adm_options(request, comp_slug):
    '''
        Manage Company options
    '''
    company = Company.get_company(comp_slug)
    comp_form = CompanyForm(request.POST or None, instance=company)

    if request.method == "POST":
        if comp_form.is_valid():
            comp_form.save()

    return render(request, "polls/adm_options.html", locals())

И часть HTML-кода:

                    <div class="row border mt-4">
                        <div class="col-sm-12">
                            <h5>Préférences de l'application</h5>
                        
                            <div class="row">
                                <div class="col-sm-5 mt-2">
                                    {{comp_form.use_groups}} <label for="{{comp_form.use_groups.label}}">{{comp_form.use_groups.label}}
                                </div>
                                <div class="col-sm-7 mt-2">
                                    <p><label for="{{comp_form.rule.label}}">{{comp_form.rule.label}}</label> : {{comp_form.rule}}</p>
                                    <p>{{comp_form.upd_rule}} <label for="{{comp_form.use_groups.label}}">{{comp_form.upd_rule.label}}</p>
                                </div>
                            </div>
                        </div>
                    </div>

The concern is the format of the field: Dropdown list display

When the user click on the arrow, here is the display (there are only 2 options): Dropdown list display (2)

Что я сделал не так? Заранее большое спасибо

В своей модели Company вы использовали только два варианта выбора:

rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")]

При отображении этой формы модели в HTML должно быть только два варианта. Если вы хотите иметь больше вариантов, вам следует изменить вашу модель.

Вернуться на верх