如何在 ModelForm 中使用 forms.ChoiceField()?

Posted

技术标签:

【中文标题】如何在 ModelForm 中使用 forms.ChoiceField()?【英文标题】:How to use forms.ChoiceField() inside ModelForm? 【发布时间】:2017-04-14 15:05:24 【问题描述】:

我想使用 ModelForm 在我的表单中显示一个下拉列表。我的代码添加在下面-

from django import forms
from django.forms import ModelForm

class CreateUserForm(ModelForm):
  class Meta:
    model = User
    fields = ['name', 'age']
    AGE_CHOICES = (('10', '15', '20', '25', '26', '27', '28'))
    age = forms.ChoiceField(
        widget=forms.Select(choices=AGE_CHOICES)
    )

它没有在表单中显示下拉列表。另外,我希望将“选择”选为默认值,并带有空值。我怎样才能做到这一点?

提前致谢!

【问题讨论】:

字段不应该是元类的一部分,只需将其缩进到类级别 grade是User模型的一个字段吗,还是你把grade写错了age。? 对不起,弄错了!已经更新了。谢谢 【参考方案1】:

修改了你的代码。试试这个:

from django import forms
from django.forms import ModelForm

class CreateUserForm(ModelForm):
    class Meta:
        model = User
        fields = ('name', 'age')
        AGE_CHOICES = (
                ('', 'Select an age'),
                ('10', '10'), #First one is the value of select option and second is the displayed value in option
                ('15', '15'),
                ('20', '20'),
                ('25', '25'),
                ('26', '26'),
                ('27', '27'),
                ('28', '28'),
                )
         widgets = 
            'age': forms.Select(choices=AGE_CHOICES,attrs='class': 'form-control'),
        

【讨论】:

以上是关于如何在 ModelForm 中使用 forms.ChoiceField()?的主要内容,如果未能解决你的问题,请参考以下文章

如何在modelform中给出初始值

如何在 ModelForm 中使用 admin.TabularInline

如何使用 Ajax 在 Django 中更新 modelForm

使用 Django,如何在模板中动态设置 ModelForm 字段值?

如何使用 Xamarin.Forms/C# 将 mp3 从 youtube 下载到 android?

如何使用 Modelform 和 jquery 在 django 中获取相互依赖的下拉菜单?