【发布时间】:2020-05-23 18:07:52
【问题描述】:
我正在尝试确定 Django 中的管理屏幕是在保存方法中添加还是更改。如果我在网上搜索,我找不到任何答案。在 Python 中执行此操作的正确方法是什么?
【问题讨论】:
我正在尝试确定 Django 中的管理屏幕是在保存方法中添加还是更改。如果我在网上搜索,我找不到任何答案。在 Python 中执行此操作的正确方法是什么?
【问题讨论】:
如果您更新模型,对象的主键不是None,因此您可以检查这一点,例如:
class MyModelAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
if obj.pk is None:
# add
pass
else:
# change
super().save_model(request, obj, form, change)
【讨论】:
与 ModelForms 一样,您可以使用类似的技巧:
def save_model(self, request, obj, form, change):
if obj._state.adding:
# Adding
else:
# Editing
super().save_model(request, obj, form, change)
【讨论】:
我们可以在调用 super().init() 之前检查 self.instance。 试试我的解决方案 https://stackoverflow.com/a/70845558/15080117
【讨论】: