Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:用户只能编辑或删除与其帐户关联的对象_Python_Django_Web Applications - Fatal编程技术网

Python Django:用户只能编辑或删除与其帐户关联的对象

Python Django:用户只能编辑或删除与其帐户关联的对象,python,django,web-applications,Python,Django,Web Applications,有一个与此类似的问题,但它需要使用tastypie-我正在寻找一种不需要任何附加组件就可以做到这一点的方法 我正在尝试创建一个系统,用户只能编辑绑定到其帐户的对象 models.py: class Item(models.Model): ... author = models.ForeignKey(User) ... 我想要一个只有作者字段中指定的用户才能编辑或删除对象的系统。在我看来,使用默认的管理系统是不可能的。我可以通过编写我自己的管理页面来实现它,该页面检查用户

有一个与此类似的问题,但它需要使用tastypie-我正在寻找一种不需要任何附加组件就可以做到这一点的方法

我正在尝试创建一个系统,用户只能编辑绑定到其帐户的对象

models.py:

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
来禁用多选操作