gpt4 book ai didi

django - 覆盖 Django inlineformset_factory has_changed() 以始终返回 True

转载 作者:行者123 更新时间:2023-12-04 06:53:16 26 4
gpt4 key购买 nike

我正在使用 django inlineformset_factory 函数。

a = get_object_or_404(ModelA, pk=id)

FormSet = inlineformset_factory(ModelA, ModelB)
if request.method == 'POST':
metaform = FormSet (instance=a, data=request.POST)

if metaform.is_valid():
f = metaform.save(commit=False)

for instance in f:
instance.updated_by = request.user
instance.save()
else:
metaform = FormSet(instance=a)

return render_to_response('nodes/form.html', {'form':metaform})

发生的情况是,如果我更改了任何数据,那么一切正常,并且所有数据都会更新。但是,如果我不更改任何数据,则不会更新数据。即只有更改的条目通过 for 循环才能保存。我想这是有道理的,因为如果数据没有改变就没有意义保存数据。但是,我需要遍历并保存表单中的每个对象,无论它是否有任何更改。

所以我的问题是如何覆盖它,以便它通过并保存每条记录,无论它是否有任何更改?

希望这是有道理的

谢谢

最佳答案

我认为 inlineformset_factory 可以采用表单对象。我相信你可以做的是创建一个 forms.ModelForm,然后添加一个字段always_update = forms.IntegerField(required=False)然后在 __init__函数做类似 self.fields['always_update'].initial = int(time.time()) 的事情.我相信这会强制它更新,但您必须对此进行测试。

关于django - 覆盖 Django inlineformset_factory has_changed() 以始终返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2825399/

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