django在modelform中使用模型选择

时间:2013-12-19 15:11:32

标签: django forms model choice

我想知道我应该如何在我的ModelForm中使用我的模型选择选项。

实施例(模型):

class NPCGuild(models.Model):
    CATEGORIES=(
        ('COM', 'Combat'),
        ('CRA', 'Crafting'),
        ('WAR', 'Warfare'),
    )
    faction = models.ForeignKey(Faction)
    category = models.CharField(max_length=3, choices=CATEGORIES)
    name = models.CharField(max_length=63)

我的表格:

class NPCGuildForm(forms.ModelForm):
    name = forms.CharField()
    category = forms.CharField(
                        some widget?)
    faction_set = Faction.objects.all()
    faction = forms.ModelChoiceField(queryset=faction_set, empty_label="Faction", required=True)

    class Meta:
        model = NPCGuild
        fields = ['name', 'category', 'faction']

正如你所看到的,我不知道我应该做些什么来从我的模型作为选择领域做出选择。也许它可以用ModelChoiceField完成,但是如何在其中获得选择?

有人可以帮助我吗

1 个答案:

答案 0 :(得分:4)

您应该在Meta类中指定模型,并且将自动生成字段:

class NPCGuildForm(forms.ModelForm):
    class Meta:
        model = NPCGuild

如果您愿意,可以添加额外的表单字段。详细了解ModelFroms

更新作为评论中提到的 karthikr 。如果要在表单字段中设置可用选项,则必须使用forms.ChoiceField,如下所示:

category = forms.ChoiceField(choices=NPCGuild.CATEGORIES)