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

时间:2010-07-14 21:42:43

标签: 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

-forms.py

class MenuCategoryForm(ModelForm):
    class Meta:
        model = Menu_Category
        fields = ('name')

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

提前致谢。

1 个答案:

答案 0 :(得分:7)

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

在这一行:

fields = ('name')

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

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

fields = ('name',)

(事实上,正如Python文档所示,根本不是括号,而是逗号。)