django - 多对多字段作为表单上的下拉菜单

muz*_*mil 4 django django-forms

我有一个多对多关系模型,它实际上显示为表单上的多选列表。在一个特定的地方,我想将其显示为下拉单选 - 知道如何做到这一点吗?

Dom*_*ger 5

请参阅有关覆盖默认字段类型或小部件的文档。

如果您有一个Book模型,与ManyToMany存在关系Author,如下所示:

class Author(models.Model):
    name = models.CharField(max_length=100)
    title = models.CharField(max_length=3, choices=TITLE_CHOICES)

    def __unicode__(self):
        return self.name

class Book(models.Model):
    name = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
Run Code Online (Sandbox Code Playgroud)

那么你可以这样做:

from django.forms import ModelForm, Select

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        widgets = {
            'name': Select(),
        }
Run Code Online (Sandbox Code Playgroud)

注意。该代码尚未经过测试,但希望足以帮助您上路。