选择字段不显示选项

Selectfield not showing options

我的模型表单中有一个字段,用户可以在其中选择膳食类型。但是表单输入不起作用,当我点击它时,没有任何反应。我想要发生的是显示一个包含不同膳食类型的下拉菜单。

模型看起来像这样

class Recipe(models.Model):
   ...
    meal_type = {
        ('Breakfast', 'Breakfast'),
        ('Lunch', 'Lunch'),
        ('Dinner', 'Dinner')

    }
    meal = models.CharField(max_length=12, choices=meal_type, null=True)

我的表格是这样的

class RecipeForm(forms.ModelForm):
 ...
    meal = forms.CharField(widget=forms.Select(attrs={'class':'form-select'}))
    class Meta:
        model = Recipe
        ....

我也尝试过使用“Choicefield”而不是“Charfield”,但我无法让它工作。

编辑 这就是我在模板中呈现表单的方式

<form action='' method="POST" class="form" hx-post='' hx-swap='outerHTML' >
{% csrf_token %}

{% for field in form %}
    <div class="form-group">
        {{field}}
    </div>
{% endfor %}


<div class='htmx-indicator'>Loading...</div>
<div class="text-center">
    <button class='htmx-inverted-indicator' style='margin-top:10px;' type='submit' >Save</button>
  </div>

{% if message %}
    <p>{{ message }}</p>
{% endif %}
然后我将其包含在更新模板中,例如
{% include 'recipe/komponents/forms.html' %}

尝试使用方括号 [for, a, list] 而不是花括号 {"which":denotes, "a": dictionary),例如,

meal_type = [
    ('Breakfast', 'Breakfast'),
    ('Lunch', 'Lunch'),
    ('Dinner', 'Dinner')
]

您还像 forms.form 而不是 forms.ModelForm 那样定义了小部件,这可能会使问题混淆。在您的表单中,尝试删除 meals =... 行并替换为:

Class Meta:
    model = Recipe
    widgets = {
        'meal': forms.Select(attrs={'class':'form-select'}),
    }