我尝试覆盖def has_delete_permission(self,request,obj = None):,但是在删除Django Admin中的记录时没有传递obj。
任何帮助将不胜感激!谢谢。
答案 0 :(得分:1)
<强>模型强>
from django.contrib.auth.models import User
class Item(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
info = models.TextField()
查看强>
obj = Item.objects.get(id=1)
if obj.owner == request.user:
obj.delete()
为了在Django Admin中执行此操作,您需要覆盖delete_model
文件中的admin.py
方法。对以上模型使用以下代码,以确保用户只删除自己的内容,而不删除其他人的内容。
<强> admin.py 强>
class ItemAdmin(admin.ModelAdmin):
def delete_model(self, request, obj):
if obj.owner == request.user:
obj.delete()
return
admin.site.register(Item, ItemAdmin)
现在尝试从管理页面在模型中创建两个对象,并使用两个单独的用户作为所有者。您只能删除自己的内容,而不能删除其他内容。我查了一下代码。这对我有用。