在 Django 中,有没有一种明智的方法来腌制表单?

Is there a sensible way to pickle forms in Django?

提问人:Danny 提问时间:1/21/2019 更新时间:10/13/2023 访问量:210

问:

我正在尝试在 Django 中腌制一个表单。这样我就可以从另一个网页上调用同一点。但是,我收到错误:

_pickle.PicklingError: Can't pickle <function paginator_number at 0x0000020BD0CBE840>: it's not the same object as django.contrib.admin.templatetags.admin_list.paginator_number

由于泡菜无法处理功能。有没有更可取的解决方法或替代方法?我想知道腌制表格是否只是不好的做法。

python django 表单

评论


答:

0赞 Roman Imankulov 10/13/2023 #1

当我不得不缓存和恢复表单状态时,我遇到了同样的问题。罪魁祸首是表单的属性及其几个属性,例如(有关更多上下文,请参阅表单呈现API)。rendererform._errors

我的解决方法是为渲染器注册一个自定义泡菜处理程序,这样它在泡菜时就不会保存任何状态。取消腌制时,将从头开始重新创建对象。django.forms.renderers.DjangoTemplates

import copyreg

from django.forms.renderers import DjangoTemplates

def pickle_django_templates(instance):
    return DjangoTemplates, ()


copyreg.pickle(DjangoTemplates, pickle_django_templates)