提问人:Danny 提问时间:1/21/2019 更新时间:10/13/2023 访问量:210
在 Django 中,有没有一种明智的方法来腌制表单?
Is there a sensible way to pickle forms in Django?
问:
我正在尝试在 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
由于泡菜无法处理功能。有没有更可取的解决方法或替代方法?我想知道腌制表格是否只是不好的做法。
答:
0赞
Roman Imankulov
10/13/2023
#1
当我不得不缓存和恢复表单状态时,我遇到了同样的问题。罪魁祸首是表单的属性及其几个属性,例如(有关更多上下文,请参阅表单呈现API)。renderer
form._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)
评论