当只使用一个字段时,不会显示Django表单

Jus*_*cas 0 python django django-forms

我有一个django模型和模型形式,如下所示:

-models.py

class Menu_Category(models.Model):
    merchant = models.ForeignKey(Merchant, related_name='menu_categories')
    name = models.CharField(max_length=64)
    test_field = models.CharField(max_length=20)

    def __unicode__(self):
     return self.name
Run Code Online (Sandbox Code Playgroud)

-forms.py

class MenuCategoryForm(ModelForm):
    class Meta:
        model = Menu_Category
        fields = ('name')
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我只从表单中选择一个字段来显示(fields = ('name'))时,表单不会显示任何内容,也不会出现任何错误.它完全是空白的.但是,当我添加第二个字段时fields = ('name','test_field'),表单显示两个字段就好了.表单可以显示的字段数是否最少?

提前致谢.

Dan*_*man 7

你被一个常见的Python陷阱所困扰.

在这一行:

fields = ('name')
Run Code Online (Sandbox Code Playgroud)

您创建的变量不是包含单个字符串"name"的单元素元组.相反,它是一个可迭代的单个字符串,所以当Django尝试迭代它以获取字段的名称时,它会认为你已经设置了'n','a','m','e'.

要创建单元素元组,您始终需要一个尾随逗号.

fields = ('name',)
Run Code Online (Sandbox Code Playgroud)

(事实上​​,正如Python文档所示,它不是括号,而是逗号.)逗号.)