我有一个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')
时,表单显示两个字段就好了。表单可以显示的字段数是否最少?
提前致谢。
答案 0 :(得分:7)
你被一个常见的Python陷阱所困扰。
在这一行:
fields = ('name')
您创建的变量是而不是包含单个字符串“name”的单元素元组。相反,它是一个可迭代的单个字符串,因此当Django尝试迭代它以获取字段的名称时,它会认为您已设置'n','a','m','e'
。
要创建单元素元组,您始终需要一个尾随逗号。
fields = ('name',)
(事实上,正如Python文档所示,根本不是括号,而是逗号。)