设置对象权限,以便只有`owner`字段中指定的用户才能修改对象?

时间:2015-08-28 20:11:05

标签: django

我有一个模型,Package

class Package(models.Model):
    VIP = models.BooleanField()
    name = models.CharField(max_length=200)
    contents = models.CharField(max_length=200)
    owner = # a string, user name goes here

对于Package的任何特定实例(即数据库的每一行),我希望只有用户名匹配owner的用户才能通过管理界面修改此实例。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

覆盖模型管理员的has_change_permission

return obj.owner == request.user.username

上面的代码假定所有者是外键,我建议使用。如果您确实要将用户名存储为字符串,则可以将最后一行更改为:

has_delete_permission

您可以添加额外的检查,以确保用户进行了更改'也允许使用Package模型(有关详细信息,请参阅the docs)。

请注意,您可能希望覆盖{{1}}模型管理员方法。