【问题标题】:Django forms which fields are required as "bound" fields to validateDjango表单哪些字段需要作为“绑定”字段进行验证
【发布时间】:2013-08-08 03:53:14
【问题描述】:

根据这个问题:Difference between Django Form 'initial' and 'bound data'?:

这是 django 文档中关于绑定和未绑定表单的关键部分。

如果它绑定到一组数据,它能够验证该数据并将表单呈现为 HTML,并在 HTML。

如果未绑定,则无法进行验证(因为没有要验证的数据!),但仍可以将空白表单呈现为 HTML。

我的问题是: 有没有一种简单的方法可以知道哪些 字段需要 绑定才能进行验证?

我们有一个多继承 ModelForm 的噩梦,很难弄清楚哪些是“绑定”的最低要求字段。

在这种情况下,我尝试将我的 form.data 与 vars(form.fields) 匹配,但这还不够,它只是通过模型进行持续的便饭,并在特别的情况下将越来越多的内容添加到 form.data方式。

是否有一些可绑定字段的最低要求的基本列表?

【问题讨论】:

  • 你的问题有点奇怪;因为没有“可绑定字段”之类的东西。绑定表单只是意味着添加了 一些 数据;数据可能不完整——也就是说,它可能不代表表格中的所有字段;那很好。您要解决的实际问题是什么?
  • 感谢 Burhan,有 一些 数据,但表单仍然是 form.is_bound=False。我想知道的是我还需要向数据中添加什么才能使is_bound 为真。
  • 你能贴一些代码吗?弄清楚发生了什么会容易得多。

标签: django django-forms


【解决方案1】:

根据您的澄清评论:

[T]这里有一些数据,但表单仍然是 form.is_bound=False。我想知道的是,为了使 is_bound 为 True,我还需要向数据中添加什么。

这不是存在或不存在什么数据的问题,而是如何构造表单对象的问题。

来自docs:

To create an unbound Form instance, simply instantiate the class:

>>> f = ContactForm()

To bind data to a form, pass the data as a dictionary as the first parameter to your Form class constructor:
>>> data = {'subject': 'hello',
...         'message': 'Hi there',
...         'sender': 'foo@example.com',
...         'cc_myself': True}
>>> f = ContactForm(data)

也就是说,如果你在实例化表单时提供了一个参数,它就会被绑定。如果没有,就没有。

【讨论】:

  • 啊!谢谢你。我在事后添加数据,显然这就是使表单看起来好像未绑定的原因。
猜你喜欢
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
相关资源
最近更新 更多