Django模型字段作为模板中的formfield

时间:2012-02-10 07:30:57

标签: django django-models django-forms django-templates

我想这是一个简单的问题,但我无法找到一个明确的答案是否可行。

我有一个在渲染过程中传递给我的模板的Model对象。虽然我使用大多数模型字段来显示它们的值,但我发现需要将它们中的一些显示为表单字段(其各自的HTML元素,如通过ModelForms呈现)。可以在这里避免使用ModelForm类,只需使用Model的字段直接从模板呈现为formfield吗?

一个例子:

class MyModel(models.Model):
    month = models.PositiveIntegerField(_('Month'), choices=MONTH_CHOICES)
    year = models.PositiveIntegerField(_('Year'))

现在在基于上述模型示例的模板中,我想将年份显示为值,而将月份显示为具有所选当前值的下拉列表?

赞赏任何指针!

用例:

想象一下通用的list_view,就像渲染查询集的情况一样。你有什么是每次迭代的对象,但是在列表视图中你想让你的用户执行一些对象属性的快速编辑,以避免强迫他们进入完全编辑模式(可能通过简单的ajax)。

1 个答案:

答案 0 :(得分:0)

没有

正如评论中所述,这是不可能的。一个模型,它的字段不知道形式 - 这就是形式和模型形式的用途。

执行此操作的正确方法是使用modelform包装模型对象,如果您希望使其更透明,可以使用modelform(使用继承)对非表单字段执行任何操作。

在模板中创建模型表示您无法在django中处理表单。显然你想要将它们与某种ajax接口连接起来,所以也许这对你来说不是问题,但无论如何,我都没有看到如何简单地更容易而不是简单地创建模型观点。