0
我试图通过内ItemAdmin覆盖django ManyToManyField的Queryset过滤器?
def queryset(self, request):
限制的结果。
我想仅显示通过用户配置文件被授予了request.user的类别访问权限的项目。
class Profile(models.Model):
user = models.ForeignKey(auth.User, unique=True)
categoryAccess = models.ManyToManyField(Category ...)
class Item(models.Model):
category = models.ForeignKey(Category ...)
我不能完全得到语法正确的....我试图像
class ItemAdmin(admin.ModelAdmin):
def queryset(self, request):
qs = super(ItemAdmin, self).queryset(request)
return qs.filter(category__in=request.user.objects__profile__categoryAccess)
任何想法的东西呢?非常感谢!
嘿丹尼尔!非常感谢...我将该字段更改为OneToOne,但我得到'配置文件匹配查询不存在'。 – cssndrx 2012-03-15 02:54:52
哦,哎呀!实际上这是我的不好。代码打破了,因为用户在创建时没有配置文件。只是捕获该异常并返回空列表是否正确?感谢修复:) – cssndrx 2012-03-15 03:01:46
只是为了确认...向后关系user.profile将工作,对吧?我在文档中看到,与__语法可能存在后向关系。但是,当我创建一个配置文件,然后尝试过滤:我得到一个非传统的Django错误。它说:“数据库错误:数据库安装有问题,确保已经创建了适当的数据库表,并确保数据库可以被适当的用户读取。”有没有人见过这个? – cssndrx 2012-03-15 15:44:38