Django - 在group_by中使用条件的数据库查询

时间:2015-02-02 15:44:24

标签: django database group-by distinct django-queryset

我有以下型号:

class UsersRoles(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)
    user = models.ForeignKey(User, db_column='USER_ID')
    role = models.ForeignKey(Roles, db_column='ROLE_ID')
    room= models.ForeignKey(Rooms, db_column='ROOM_ID')
    d_begin = models.DateTimeField(db_column='D_BEGIN')
    d_end = models.DateTimeField(db_column='D_END')

class Roles(models.Model):
    id = models.AutoField(db_column='ID', primary_key=True)
    name = models.CharField(db_column='NAME', max_length=45)

以及django用户模型。

所以,我想检索UsersRoles 3的Room Role id等于5。

由于有多个UsersRoles符合此条件,因此我想将UsersRolesUser ID分组,只返回lastest d_begin date的{​​{1}},但是如果存在d_begin is NULL that's the one to return

在这些条件之后,我想分组用户名。

为了获得角色5的3号房间的UsersRoles,我会这样做:

users_roles = UsersRoles.objects.filter(room__id=3, role__id=5)

我的问题是按用户ID对它们进行分组,为每个用户获取具有d_begin的UserRole,如果有的话,则为NULL,如果没有,则为具有最新日期的用户。

要订购它们,我会users_roles.order_by('user__name')

0 个答案:

没有答案