django - 多个到多个字段呈现为下拉问题

时间:2011-07-06 13:36:40

标签: django django-forms

型号:

class ExpertLevel(models.Model):
    level = models.CharField(max_length=100)
    subject = models.ManyToManyField(Subject, blank=True, null=True)

class Expert(models.Model):
    appuser = models.ForeignKey(AppUser , unique=True)
    level = models.ManyToManyField(ExpertLevel, blank=True, null=True)

形式:

class EditExpertForm(ModelForm):
    class Meta:
        model = Expert
        fields = ('level',)
        widgets = {'level': Select()}

问题:在模板中呈现的级别字段(来自专家模型)不包含空白选项(默认情况下应该存在)。

documentation表示“如果模型字段为空白= False且显式默认值(最初将选择默认值),则不包括空白选项。”..这里是空白=真。

任何原因??

1 个答案:

答案 0 :(得分:1)

在同一页面上,你会看到:

  

如果你明确地实例化这样的表单字段,Django假定你想要完全定义它的行为;因此,不会从相应的模型中绘制默认属性(例如max_length或required)。如果要维护模型中指定的行为,则必须在声明表单字段时明确设置相关参数。

(这包含在Overriding the default field types or widgets一章中)。

我同意文件在这个问题上令人困惑;一个人倾向于快速阅读这些警告(换句话说:我曾经有过同样的问题,并且在实际理解应用于您的案例的警告之前不得不重新阅读文档几次 - 也改变了窗口小部件类型 - )。