【发布时间】:2018-07-19 22:22:17
【问题描述】:
我尝试覆盖 def has_delete_permission(self, request, obj=None):,但是在 Django Admin 中删除记录时没有传递 obj。
任何帮助将不胜感激!谢谢。
【问题讨论】:
-
删除记录时肯定是通过了。请在上下文中显示您使用过的代码,并说明您如何确定它没有被通过。
标签: django django-admin
我尝试覆盖 def has_delete_permission(self, request, obj=None):,但是在 Django Admin 中删除记录时没有传递 obj。
任何帮助将不胜感激!谢谢。
【问题讨论】:
标签: django django-admin
型号
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 中执行此操作,您需要覆盖 admin.py 文件中的 delete_model 方法。对上述模型使用以下代码,以确保用户只删除自己的内容,而不会删除其他人的内容。
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)
现在尝试从管理页面在模型中创建两个对象,并使用两个单独的用户作为所有者。您将只能删除您的内容,而不能删除其他内容。我检查了代码。这对我有用。
【讨论】: