【问题标题】:Blank form fields are not accepted不接受空白表单域
【发布时间】:2012-02-28 12:19:00
【问题描述】:

PostgreSQL 数据库中的表:

CREATE TABLE pmss_recordmodel
(
  id serial NOT NULL,
  "Name" character varying(100),
  CONSTRAINT pmss_recordmodel_pkey PRIMARY KEY (id)
)
WITH (OIDS=FALSE);
ALTER TABLE pmss_recordmodel OWNER TO postgres;

型号:

class RecordModel(models.Model):

    def __unicode__(self):
        return self.Name

    Name = models.CharField(max_length = 100, unique = False, null = True, blank = True)

当我使用空白名称字段发布数据时,form.is_valid() 返回 False。为什么?我错过了什么吗?

编辑:

class RecordForm(forms.ModelForm):

    class Meta:
        model = RecordModel

    Name = forms.CharField(label = "Имя ", widget = forms.TextInput(attrs = {'size': 15}))

【问题讨论】:

  • form.errors 显示什么
  • {'姓名': [u'\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435\u043f\u043e\u043b\u0435.' ]} ({'姓名': ['必填字段']})
  • 请显示代码,它会创建一个表单?

标签: python django django-models


【解决方案1】:

Django forms documentation:

默认情况下,每个 Field 类都假定该值是必需的

将“必需”参数设置为 False,如下所示:

Name = forms.CharField(required = False, label = "Имя ", widget = forms.TextInput(attrs = {'size': 15}))

【讨论】:

    【解决方案2】:

    您可能在数据库中如何定义该字段时遇到问题。

    这似乎是一种常见的情况,即使用最初没有 blank=True null=True 的字段进行同步数据库,然后稍后(在初始同步数据库之后)添加这些术语以使该字段不需要。这些设置不会通过简单地再次运行 syncdb 来应用。它需要数据库迁移或数据库刷新(将清除现有数据,这在开发中不一定是坏的)。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 2018-04-03
      • 2018-01-26
      相关资源
      最近更新 更多