我在医生那里读过这方面的资料,但是什么也没找到。在
你建议用Django扩展自定义表单吗?在
这是我的问题。我在用Biblion写博客应用程序。问题是我不想使用默认行为(从管理站点创建博客帖子)。有这样一个表单:https://github.com/eldarion/biblion/blob/master/biblion/forms.py#L13,它有自定义逻辑来保存Post(并进行一些解析)。在
我很乐意将此表单扩展为一些自定义操作。例如,我想让一些用户创建博客帖子,但不允许他们发布。相反,我应该检查和缓和他们。所以,为了这个原因,我尝试了一些类似的东西:
class PostForm(AdminPostForm):
publish = forms.BooleanField(
required = False,
widget = forms.HiddenInput # don't show it
)
它现在可以工作了,但是我想问你们是否还有其他的选择(我可以阻止它显示在我的模板中,迭代表单文件,但不太喜欢这个选项)。在
另一个选择是从AdminPostForm
复制/粘贴代码,但是,似乎也不是一个好的选择。但是如果没有简单的方法来定制几个案例的表单,我就这么做。在
有什么想法?在
谢谢!!在
扩展ModelAdmin
如果您想在表单中实现每用户逻辑,您可能需要扩展您的
ModelAdmin
,而不是表单。在在这里,您需要重写
ModelAdmin
的save_form
方法。save_form
在self
:request, form, change
中加入3个参数。您将执行以下操作:通常,Django类有很多钩子,所以您可以在那里插入自定义逻辑。在
你为什么要这么做?在
在这里,您只是隐藏了输入,但是任何有一个像样的浏览器的人都可以修改这个值并在您的
published
输入中发布True
。在停在那里。在
表单没有“动作”。表单只用于验证输入。ModelForms包含一个用于保存有效输入的扩展。重点是验证输入。在
如果你想要“操作”,你应该写视图函数。在
您可能还需要创建自定义管理操作https://docs.djangoproject.com/en/1.3/ref/contrib/admin/actions/(不是窗体)
如果要从中删除项,请执行此操作。在
使用模型窗体。https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/
列出“排除”值中的字段。https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form
相关问题 更多 >
编程相关推荐