我的 model.py
中有这个
class marca(models.Model):
marcas = (
('chevrolet', 'Chevrolet'),
('mazda', 'Mazda'),
('nissan', 'Nissan'),
('toyota', 'Toyota'),
('mitsubishi', 'Mitsubishi'),
)
marca = models.CharField(max_length=2, choices= marcas)
def __unicode__(self):
return self.marca
我需要在我的
form.py
中使用它我试过这个,但它不起作用。
class addVehiculoForm(forms.Form):
placa = forms.CharField(widget = forms.TextInput())
tipo = forms.CharField(max_length=2, widget=forms.Select(choices= tipos_vehiculo))
marca = forms.CharField(max_length=2, widget=forms.Select(choices= marcas))
最佳答案
将您的选择移至模型上方,位于 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)
然后在您声明表单的文件中:
from yourapp.models import marcas
class VehiculoForm(forms.Form):
marca = forms.ChoiceField(choices=marcas)
我还为您解决了一些其他问题:
max_length
您的字符字段,因为您正在存储单词 chevrolet
任何时候有人会选择 Chevrolet
在选择下拉。 如果您只是创建一个表单来保存
Marca
的记录模型,使用 ModelForm
, 像这样:from yourapp.models import Marca
class VehiculoForm(forms.ModelForm):
class Meta:
model = Marca
现在,django 将自动呈现选择字段。
关于django - 如何在表单中使用模型中声明的 choiceField。 Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802254/