Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何创建多选选项?或者向models.CharField添加属性_Django_Django Models - Fatal编程技术网

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”,以便显示选项,然后它成功了。