django在modelform中使用模型选择

Han*_*ong 1 forms django 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)
Run Code Online (Sandbox Code Playgroud)

我的表格:

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']
Run Code Online (Sandbox Code Playgroud)

如您所见,我不确定我应该怎么做才能从模型中将我的选择作为选择字段。也许也可以使用ModelChoiceField来完成,但是接下来如何选择呢?

有人可以帮我吗

nie*_*kas 5

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

class NPCGuildForm(forms.ModelForm):
    class Meta:
        model = NPCGuild
Run Code Online (Sandbox Code Playgroud)

您可以根据需要添加其他表单字段。阅读有关ModelFroms的更多信息。

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

category = forms.ChoiceField(choices=NPCGuild.CATEGORIES)
Run Code Online (Sandbox Code Playgroud)