gpt4 book ai didi

Django - 如何在保存前检索表单字段的值?

转载 作者:行者123 更新时间:2023-12-01 15:22:31 25 4
gpt4 key购买 nike

提交模型表单时,在保存字段值之前检索字段值的正确方法是什么?

例如,我正在尝试获取表单中更改之前的字段“名称”。我像下面那样做,它有效,但我不确定这是正确的方法。

views.py:

if formset.is_valid():
for form in formset:
if form.has_changed and not form.empty_permitted:
cd = form.cleaned_data
new_fieldName = cd.get('name')
old_fieldName = str(cd.get('id'))
form.save()

有什么建议吗?

最佳答案

formset.is_valid 将调用每个表单的 is_valid 方法,后者又将调用 full_clean,后者调用 _post_update,它使用随表单提交的值更新表单的 instance。在您调用 formset.is_valid 之后找到对旧值的引用为时已晚;你有两个选择:

  1. 您调用 formset.is_valid 之前存储实例字段的副本:

    saved = {}
    for form in formset.forms:
    saved[form.instance.pk] = form.instance.__dict__.copy()
    # or keep only specific fields
  2. 在调用 save 之前检索记录的实例:

    original = form._meta.model.objects.get(pk=form.instance.pk)
    # compare original against form.instance and observe differences
    # save your form when you're ready:
    form.save()

关于Django - 如何在保存前检索表单字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22325563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com