Django模型查询自定义选择字段
我正在使用一种叫做django-granular-permissions的行级权限模型(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_staff
和is_student
这两个布尔字段,而不想每次获取结果时都要重新查询。
Django的文档里提到了querysets的extra()方法,但我搞不清楚在这种关系下,应该怎么写普通的SQL选择查询。
该怎么做呢?
2 个回答
0
通常情况下,你会使用select_related()来处理这种情况,但不幸的是,它在反向关系上不起作用。你可以尝试把查询的方向调过来:
users = [permission.user for permission in Permission.objects.select_related('user').filter(...)]
5
.extra(select={'is_staff': "%s.name='staff'" % Permission._meta.db_table, 'is_student': "%s.name='student'" % Permission._meta.db_table, })
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。