我有一个模型,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
的用户才能通过管理界面修改此实例。我怎么能这样做?
答案 0 :(得分:3)
覆盖模型管理员的has_change_permission
。
return obj.owner == request.user.username
上面的代码假定所有者是外键,我建议使用。如果您确实要将用户名存储为字符串,则可以将最后一行更改为:
has_delete_permission
您可以添加额外的检查,以确保用户进行了更改'也允许使用Package模型(有关详细信息,请参阅the docs)。
请注意,您可能希望覆盖{{1}}模型管理员方法。