【发布时间】:2018-07-26 20:25:23
【问题描述】:
有没有办法可以访问导致post_save 的表单?
用例是我有一个未附加到特定模型的字段(复选框),但它是表单本身的一个额外字段。
我想知道在保存表单并存储模型时该字段是被选中还是未选中,并且 post_save 信号是放置应该处理该额外字段的逻辑的好地方。
我也愿意接受其他建议,我可以将那段代码放在哪里。
【问题讨论】:
标签: python django python-3.x django-1.10
有没有办法可以访问导致post_save 的表单?
用例是我有一个未附加到特定模型的字段(复选框),但它是表单本身的一个额外字段。
我想知道在保存表单并存储模型时该字段是被选中还是未选中,并且 post_save 信号是放置应该处理该额外字段的逻辑的好地方。
我也愿意接受其他建议,我可以将那段代码放在哪里。
【问题讨论】:
标签: python django python-3.x django-1.10
post_save 不会知道任何可能导致模型更改的形式。
如果您想访问该复选框值,您需要在表单类本身中进行。我可能会覆盖表单的clean() 方法,并在那里检查cleaned_data['checkbox_field'] 中的复选框值,然后用它做任何你需要的事情。
【讨论】:
clean 方法对于我的目的来说太快了。模型保存成功后,我需要做我的逻辑。
save() 方法并将逻辑放在那里。假设您使用的是ModelForm。
save()方法中做业务逻辑感觉挺难看的。
request.POST,或者在某处的表单类中执行您的操作。或者重新考虑你的方法。