从具有多对多关系 django 的两个表中过滤数据
Posted
技术标签:
【中文标题】从具有多对多关系 django 的两个表中过滤数据【英文标题】:Filter data from two tables having many to many relation django 【发布时间】:2018-09-15 14:29:09 【问题描述】:我是 python Django 的新手。我有一个场景,我想从特定客户的插槽表中过滤掉插槽数据。使用第三个表约会连接表。在约会表中,我存储了与该客户关联的客户 ID 和插槽 ID。如何过滤掉客户所有与之关联的槽?
这是表格及其相互关系的图表。请帮我解决它。我知道通过在 SQL 中使用 join 可以获得数据。但是我想在 python Django 中过滤数据,所以我如何在 Django 中应用连接来过滤数据。我google了很多,但没有得到任何正确的答案。请在您的回答中提供适当的解释。
【问题讨论】:
您可以发布您的models.py
文件吗?
【参考方案1】:
据我了解,您想列出特定客户的所有插槽。
假设示例 cust_id = 1,那么在约会表中有与该客户关联的 slot_id 1,2,3。
我会做这样的事情,
# Retreive all slot id for the customer with id = 1
slot_ids = Appointment.objects.filter(cust_id=1).values('id')
# Get all slots related to the customer
slots = Slot.objects.filter(id__in=slot_ids)
请记住,您应该使用 values() 并检索特定列以供 id__in 使用。
在这里查看更多信息https://docs.djangoproject.com/en/2.0/ref/models/querysets/
【讨论】:
以上是关于从具有多对多关系 django 的两个表中过滤数据的主要内容,如果未能解决你的问题,请参考以下文章