Python Django:用户只能编辑或删除与其帐户关联的对象
有一个与此类似的问题,但它需要使用tastypie-我正在寻找一种不需要任何附加组件就可以做到这一点的方法 我正在尝试创建一个系统,用户只能编辑绑定到其帐户的对象 models.py:Python Django:用户只能编辑或删除与其帐户关联的对象,python,django,web-applications,Python,Django,Web Applications,有一个与此类似的问题,但它需要使用tastypie-我正在寻找一种不需要任何附加组件就可以做到这一点的方法 我正在尝试创建一个系统,用户只能编辑绑定到其帐户的对象 models.py: class Item(models.Model): ... author = models.ForeignKey(User) ... 我想要一个只有作者字段中指定的用户才能编辑或删除对象的系统。在我看来,使用默认的管理系统是不可能的。我可以通过编写我自己的管理页面来实现它,该页面检查用户
class Item(models.Model):
...
author = models.ForeignKey(User)
...
我想要一个只有作者字段中指定的用户才能编辑或删除对象的系统。在我看来,使用默认的管理系统是不可能的。我可以通过编写我自己的管理页面来实现它,该页面检查用户是否有权删除特定对象,但如果有其他方法则更好。您需要为您的模型创建一个ModelAdmin实例并覆盖适当的方法:
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(request):
# Should return True if adding an object is permitted, False otherwise.
def has_change_permission(request, obj=None)
# Should return True if editing obj is permitted, False otherwise.
# If obj is None, should return True or False to indicate whether editing of objects of this type is permitted in general
def has_delete_permission(request, obj=None)
# Should return True if deleting obj is permitted, False otherwise.
# If obj is None, should return True or False to indicate whether deleting objects of this type is permitted in general
非常感谢!这解决了我的问题。不确定为什么找不到此项。此项适用于has\u change\u权限,但也不适用于has\u delete\u权限。它为has_change将对象传递给obj,但不为has_delete传递对象。这有什么原因吗?否则,无法判断要删除的对象以及是否允许删除。您是否阅读了评论?如果它是bot传递一个对象,它不会试图删除任何东西,它只是试图确定“一般情况下是否允许删除这种类型的对象”是的,我这样做了。这似乎是一个已知的错误:。当您尝试删除多个对象时,它不会传递单个对象。当您从编辑页面删除单个对象时,它只传递一个对象。作为一种解决方法,您可以通过向
ModelAdmin
类添加actions=None
来禁用多选操作