我有以下型号:
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
符合此条件,因此我想将UsersRoles
按User
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')
。