How to use a choiceField declared in the model, in a form. django

Move your choices to be above the model, in the root of your models.py:

marcas = (
        ('chevrolet', 'Chevrolet'),
        ('mazda', 'Mazda'),
        ('nissan', 'Nissan'),
        ('toyota', 'Toyota'),
        ('mitsubishi', 'Mitsubishi'),)

class Marca(models.Model):

    marca = models.CharField(max_length=25,choices=marcas)

Then in your file where you declare the form:

from yourapp.models import marcas

class VehiculoForm(forms.Form):

     marca = forms.ChoiceField(choices=marcas)

I also fixed some other problems for you:

  • Class names should start with a capital letter
  • You need to increase the max_length of your character field because you are storing the word chevrolet anytime someone will select Chevrolet in the choice drop down.

If you are just creating a form to save records for Marca model, use a ModelForm, like this:

from yourapp.models import Marca

class VehiculoForm(forms.ModelForm):
     class Meta:
         model = Marca

Now, django will render the choice field automatically.


You need to define the choices tuple marcas outside of model class class marca.

Then you can do following in forms.py to use

from models import marcas

class addVehiculoForm(forms.Form):
    marca  = forms.CharField(max_length=2, widget=forms.Select(choices= marcas))
    ...