django use model choices in modelform

12,148

You should specify model in the Meta class and fields will be generated automatically:

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

You can add extra form fields if you want to. Read more about ModelFroms.

Update As karthikr mentioned in the comment. If you want to set available choices in a form field, you have to use forms.ChoiceField, like this:

category = forms.ChoiceField(choices=NPCGuild.CATEGORIES)
Share:
12,148
Hans de Jong
Author by

Hans de Jong

Updated on June 26, 2022

Comments

  • Hans de Jong
    Hans de Jong almost 2 years

    I was wondering how i should use my model choices options, in my ModelForm.

    Example(model):

    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)
    

    My Form:

    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']
    

    As you can see, im not sure what i should be doing to get my choices from my model as a choicefield. Maybe it can be done with a ModelChoiceField as well, but then how to get the choices in it?

    Can someone please help me out here