Django Admin save_model()在我仅尝试编辑时创建一个新对象

Django Admin save_model()在我仅尝试编辑时创建一个新对象,django,django-admin,Django,Django Admin,我最初的问题是,我试图将当前用户附加到新条目,因此我覆盖了admin.ModelAdmin下的save\u model方法来执行此操作 def save_model(self, request, obj, form, change): obj.submit_usr = request.user super().save_model(request, obj, form, change) 当我尝试在数据库中创建新对象或新条目时,这非常有效,但当我尝试编辑现有对象或条目时,它仍然会

我最初的问题是,我试图将当前用户附加到新条目,因此我覆盖了
admin.ModelAdmin
下的
save\u model
方法来执行此操作

def save_model(self, request, obj, form, change):
    obj.submit_usr = request.user
    super().save_model(request, obj, form, change)
当我尝试在数据库中创建新对象或新条目时,这非常有效,但当我尝试编辑现有对象或条目时,它仍然会创建一个新条目

我的模型看起来像(我去掉了所有的设置以避免这里的混乱)

我知道
change
arg指示现有条目中是否有更改,但我仍然无法告诉Django我只想修改当前条目,而不是创建新条目

有什么办法可以做到吗?

你可以试试

def save_model(self, request, obj, form, change):
    if not change:
        obj.submit_usr = request.user
    super().save_model(request, obj, form, change)
你可以试试

def save_model(self, request, obj, form, change):
    if not change:
        obj.submit_usr = request.user
    super().save_model(request, obj, form, change)

您在Django admin中单击哪个按钮来测试它?因为您的代码是正确的,但是您可能单击以在django Instance保存一个新的对象。单击“确定”保存当前的对象是正确的代码吗?它不应该是超级(AppUserAdmin,self)吗?保存模型(请求、对象、表单、更改)?或者这在现代django/python中是不必要的?@DiegoVinícius我没有看到“OK”按钮。“保存”、“保存并添加另一个”和“保存并继续编辑”是我使用的唯一按钮see@NicholasClaudeLeBlanc我两个都试过了。两者都有相同的效果。我不确定在这种情况下,事情是否有本质的不同。我使用的是django 2.0 btwhmmm,我只是查看源代码。我现在没有时间运行自己的测试。请尝试打印
表单。是否有效()
更改
对象id
并查看您得到了什么您单击Django admin中的哪个按钮来测试它?因为您的代码是正确的,但是您可能单击以在django Instance保存一个新的对象。单击“确定”保存当前的对象是正确的代码吗?它不应该是超级(AppUserAdmin,self)吗?保存模型(请求、对象、表单、更改)
?或者这在现代django/python中是不必要的?@DiegoVinícius我没有看到“OK”按钮。“保存”、“保存并添加另一个”和“保存并继续编辑”是我使用的唯一按钮see@NicholasClaudeLeBlanc我两个都试过了。两者都有相同的效果。我不确定在这种情况下,事情是否有本质的不同。我使用的是django 2.0 btwhmmm,我只是查看源代码。我现在没有时间运行自己的测试。尝试打印
form.is\u valid()
change
obj.id
并查看得到的结果