【问题标题】:Django form does not display when only one field is being used仅使用一个字段时,Django 表单不显示
【发布时间】:2010-07-14 21:42:43
【问题描述】:

我有一个 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') 时,表单会很好地显示这两个字段。表单可以显示的字段数量是否有最低要求?

提前致谢。

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

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

    在这一行:

    fields = ('name')
    

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

    要创建一个单元素元组,你总是需要一个尾随逗号。

    fields = ('name',)
    

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

    【讨论】:

    • 做到了。好信息要知道。这就是我每 30 秒从 python 切换到 javascript 的结果(javascript 对象末尾的额外逗号会产生错误)。谢谢。
    猜你喜欢
    • 2021-11-10
    • 2016-07-14
    • 2022-12-14
    • 2015-08-20
    • 1970-01-01
    • 2011-11-26
    • 2017-07-29
    • 2020-10-24
    相关资源
    最近更新 更多