Django:用户只能编辑或删除与其帐户绑定的对象

时间:2014-06-26 12:50:43

标签: python django web-applications

有一个类似的问题,但它需要使用tastypie - 我正在寻找一种方法来做到这一点,而无需任何额外的附加组件。

我试图创建一个系统,用户只能编辑与其帐户绑定的对象。

models.py:

class Item(models.Model):
    ...
    author = models.ForeignKey(User)
    ...

我想要一个系统,只有在author字段中指定的用户才能编辑或删除该对象。使用默认的管理系统似乎(对我来说)是不可能的。我可以通过编写自己的管理页面来实现它,该管理页面检查用户是否有权删除特定对象,但如果有其他方式会更好。

1 个答案:

答案 0 :(得分:1)

您需要为模型创建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