具有自定义选择字段的Django模型查询

2024-05-16 18:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是行级权限模型,称为django粒度权限(http://code.google.com/p/django-granular-permissions/)。权限模型只需再添加两个字段,即内容类型和对象id

我使用了以下查询:

 User.objects.filter(Q(row_permission_set__name='staff') | \
     Q(row_permission_set__name='student'), \
     row_permission_set__object_id=labsite.id)

我想向结果集中添加is_staffis_student布尔字段,而不必每次获取结果时都进行查询。在

Django文档显示了querysets的extra()方法,但我不知道应该用这个关系为纯SQL选择查询编写什么。在

怎么做?在


Tags: djangoname模型idhttp权限is粒度
2条回答
.extra(select={'is_staff': "%s.name='staff'" % Permission._meta.db_table, 'is_student': "%s.name='student'" % Permission._meta.db_table, }) 

通常您会使用select_related()来处理这类问题,但不幸的是,它不适用于反向关系。你能做的就是扭转这个问题:

users = [permission.user for permission in Permission.objects.select_related('user').filter(...)]

相关问题 更多 >