0
我试图从Django Advent的文章中实现Florian的object permissions system,但是我遇到了一个问题,试图限制返回的查询集只有用户有权编辑/查看的项目。弗洛里安在他的关于包装管理员的部分中提到它,但跳过它。我看不到过滤查询集的好方法。我错过了什么吗?如何在使用对象权限时将ModelAdmin查询集限制为用户可编辑的项目?
我试图从Django Advent的文章中实现Florian的object permissions system,但是我遇到了一个问题,试图限制返回的查询集只有用户有权编辑/查看的项目。弗洛里安在他的关于包装管理员的部分中提到它,但跳过它。我看不到过滤查询集的好方法。我错过了什么吗?如何在使用对象权限时将ModelAdmin查询集限制为用户可编辑的项目?
当你这样做:
class ObjectPermission(models.Model):
user = models.ForeignKey(User)
can_view = models.BooleanField()
can_change = models.BooleanField()
can_delete = models.BooleanField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
您可以筛选查询以这种方式设置(在你的方法查询集):
def queryset(self, request):
qs = super(YourModelAdmin, self).queryset(request)
op = ObjectPermission.objects.filter(user=request.user, can_change=True, content_type=ContentType.objects.get_for_model(YourModel)).values_list('object_id').distinct()
qs = queryset.filter(id__in=[id[0] for id in op])
return qs
那不解决我的问题。我知道如何自定义管理查询集,但我无法理清用Florian的对象权限实现来完成它的实际查询语法。 – Brooks 2010-05-25 15:24:24
布鲁克斯,对不起,我误解了这个问题,但我解决了我的答案 – diegueus9 2010-05-26 21:34:35