首页 > 解决方案 > Wagtail Django-form编辑现有对象

问题描述

我正在按照 GitHub 上的 wagtail-form-example 将 Django 表单实现为 ​​wagtail。除了能够编辑现有提交之外,我已经完成了所有工作。

这是我到目前为止遵循的代码 https://github.com/gasman/wagtail-form-example/blob/master/flavours/models.py

我已经尝试了以下代码的几个变体。

def serve(request, id):
   instance = get_object_or_404(MyModel, id=id)
   form = MyForm(request.POST or None, instance=instance)

如果有帮助,我会收到以下消息:int() 参数必须是字符串、类似字节的对象或数字,而不是“builtin_function_or_method”

任何帮助/示例将不胜感激:)

标签: djangodjango-formswagtail

解决方案


改成def serve(self, request):那样def serve(request, id):不行。

您的第二个参数id现在包含request对象,而不是错误告诉您的预期 int 。

从尊重方法参数开始serve(self, request)。这意味着您需要以其他方式查询您的表单。

例如:get_object_or_404(MyModel, id=[some hardcoded id])

如果您希望任何表单显示为您页面的子页面,您可以使用RoutablePageMixin添加一个相对于您的页面的 url。例如:

@route(r'^(\d+)/$')
def form_view(self, request, form_id=None):
    instance = get_object_or_404(MyModel, id=form_id)

推荐阅读