Django表单在使用单个字段时不显示

0 投票
1 回答
1903 浏览
提问于 2025-04-16 01:19

我有一个 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文档所示,元组的形成并不是靠括号,而是靠逗号。

撰写回答