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 wordchevrolet
anytime someone will selectChevrolet
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))
...