Django表单在使用单个字段时不显示
我有一个 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 个回答
9
你遇到了一个常见的Python小问题。
在这一行:
fields = ('name')
你创建的变量其实不是一个只包含一个字符串“name”的元组。实际上,它只是一个单独的字符串,而字符串是可以被遍历的。所以当Django试图遍历这个字符串来获取字段的名字时,它会认为你设置的是 'n','a','m','e'
,也就是把每个字母都当成了一个单独的元素。
如果你想创建一个只包含一个元素的元组,你必须在后面加一个逗号。
fields = ('name',)
实际上,正如Python文档所示,元组的形成并不是靠括号,而是靠逗号。