Django ORM离开了嵌套条件?

问题描述 投票:0回答:1

我想在django中构建一个ORM查询。首先请看数据库架构。

会议桌(meeting_meeting)

+----+------+------+
| id | host | name |
+----+------+------+
|  1 |    1 | M1   |
|  2 |    8 | M2   |
|  3 |    1 | M3   |
|  4 |    1 | M4   |
+----+------+------+

参加者表(会议参与者)

+----+------------+---------+
| id | meeting_id | user_id |
+----+------------+---------+
|  1 |          1 |       8 |
|  1 |          3 |       8 |
+----+------------+---------+

我所要做的就是生成一个有人创建或加入的会议列表。例如,用户8仅创建了一个会议(M2),但在两个会议(M1和M3)上加入。因此查询将返回M1,M2和M3作为Meeting QueryDict。

我已经使用纯sql完成了查询。

SELECT DISTINCT meeting_meeting.id, meeting_meeting.* FROM meeting_meeting 
LEFT JOIN meeting_participants on meeting_participants.meeting_id = meeting_meeting.id 
and ( meeting_meeting.host_id = 8 OR meeting_participants.user_id = 8 )

我只是不确定如何在Django中使用ORM。我确实找到了一些关于prefetch_related的参考,并选择了相关但我似乎无法将各个部分放在一起。

mysql django rdbms
1个回答
1
投票

使用:

user_id = 8
Meeting.object.filter(Q(host_id=user_id)|Q(participants__user_id=user_id))

参考:Q objects

© www.soinside.com 2019 - 2024. All rights reserved.