Django 如何创建多选选项?或者向models.CharField添加属性
我有这个Django 如何创建多选选项?或者向models.CharField添加属性,django,django-models,Django,Django Models,我有这个 models.CharField(max_length=10,choices=LOCATION_NAME) 但是,我想让它呈现这样的东西 <select multiple="multiple"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option va
models.CharField(max_length=10,choices=LOCATION_NAME)
但是,我想让它呈现这样的东西
<select multiple="multiple">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
1.
2.
3.
4.
我正在尝试将此添加到django管理部分 您可以使用SelectMultiple小部件进行渲染: 您可能会在表单中使用multipleechoicefield:
您可以使用SelectMultiple小部件进行渲染: 您可能会在表单中使用multipleechoicefield:
为您的模型制作一个ModelForm,并手动设置希望字段显示的小部件: 型号.py
class Book(models.Model):
publisher = models.CharField(max_length=100)
class BookForm(forms.ModelForm):
publisher = forms.MultipleChoiceField(widget=forms.SelectMultiple)
class Meta:
model = Book
forms.py
class Book(models.Model):
publisher = models.CharField(max_length=100)
class BookForm(forms.ModelForm):
publisher = forms.MultipleChoiceField(widget=forms.SelectMultiple)
class Meta:
model = Book
这意味着用于显示字段的HTML是一个选择,表单将以发布者列表的形式生成数据,您的有效选择仅保存为数据库中的字符字段。实际上,您不需要指定widget=forms.SelectMultiple,但最好能看到发生了什么(在谈论数据库/表单/小部件时,我总是混淆不同的字段)为您的模型制作一个模型表单,并手动设置希望字段显示为以下内容的小部件: 型号.py
class Book(models.Model):
publisher = models.CharField(max_length=100)
class BookForm(forms.ModelForm):
publisher = forms.MultipleChoiceField(widget=forms.SelectMultiple)
class Meta:
model = Book
forms.py
class Book(models.Model):
publisher = models.CharField(max_length=100)
class BookForm(forms.ModelForm):
publisher = forms.MultipleChoiceField(widget=forms.SelectMultiple)
class Meta:
model = Book
这意味着用于显示字段的HTML是一个选择,表单将以发布者列表的形式生成数据,您的有效选择仅保存为数据库中的字符字段。实际上,您不需要指定widget=forms.SelectMultiple,但最好能看到发生了什么(在谈论数据库/表单/widget时,我总是混淆不同的字段)是的。如果您正在引用其他模型,则将使用ModelMultipleChiceField(如管理中的多对多)。否则,您需要指定如何将MultipleChiceField的结果序列化到CharField中。根据您的示例,您可能希望在模型中使用CommaseParatedIntegraterField。是。如果您正在引用其他模型,则将使用ModelMultipleChiceField(如管理中的多对多)。否则,您需要指定如何将MultipleChiceField的结果序列化到CharField中。根据您的示例,您可能需要在模型中使用CommaseParatedIntegraterField。我必须将上面的“forms.MultipleChiceField”更改为“forms.CharField”,以便显示选项,然后它成功了。我不得不将上面的“forms.multipleechoicefield”改为“forms.CharField”,以便显示选项,然后它成功了。