0

我有一个带有附加字段的 CustomUser 模型和region具有相同字段的其他模型。

如何仅允许 CustomUser 的实例添加/删除/查看具有相同区域值的其他模型的实例(授予所有权限)?

编辑

按照 vivek soundrapandi 的建议,使用自定义管理器,我可以做到

class ShopManager(models.Manager):
    def get_query_set(self):
        return super(ShopManager, self).get_query_set().filter(region=?)

但是如何按当前连接用户的区域过滤 Shop 实例?

这仍然允许 CustomUser 使用默认管理器从其他区域修改 Shop 实例,对吗?

有没有办法使用 Django 权限系统来做到这一点?

谢谢

4

2 回答 2

2

使用django-guardian(实际上就是这样,但 SO 想要更多字符)

于 2012-06-06T12:19:32.143 回答
0

尝试使用模型管理器使用您自己的函数。 单击此处获取文档说明

好的,

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    name = models.CharField(max_length=100)
Entry.objects.filter(blog__name__exact='Beatles Blog')

此示例检索所有带有名为“Beatles Blog”的 Blog 的 Entry 对象。因此,您的模型管理器应该对您要引用的所有其他类执行相同的操作,并将它们组合以生成单个结果集。如果我正确理解了您的问题,这应该是解决方案。

于 2012-06-06T11:16:20.377 回答