Bel*_*dar 2 django django-forms django-views
在提交模型表单之前,在保存字段值之前检索字段值的正确方法是什么?
例如,我试图获取字段"名称",因为它在表单中更改之前.我在下面这样做,但它确实有效,但我不确定这是否正确.
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()
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
formset.is_valid将调用每个表单的is_valid方法,该方法将调用full_clean哪些调用_post_update,使用表单instance提交的值更新表单.你打电话后找到旧值的引用为时已晚formset.is_valid; 你有两个选择:
在调用之前存储实例字段的副本formset.is_valid:
saved = {}
for form in formset.forms:
saved[form.instance.pk] = form.instance.__dict__.copy()
# or keep only specific fields
Run Code Online (Sandbox Code Playgroud)在调用它之前检索记录的新实例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()
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |