如何使用Django从数据库中过滤导出的票证?

时间:2016-09-27 23:25:55

标签: python mysql django

我正在开发基于Django的Web项目,我们处理基于票证的请求。我正在进行一项实施,我需要每天导出所有已关闭的门票。

我的票证表数据库看起来像,

-------------------------------------------------
| ID | ticket_number | ticket_data |  is_closed |
-------------------------------------------------
|  1 |    123123     | data 1      |      1     |
-------------------------------------------------
|  2 |    123124     | data 2      |      1     |
-------------------------------------------------
|  3 |    123125     | data 3      |      1     |
-------------------------------------------------
|  4 |    123126     | data 4      |      1     |
-------------------------------------------------

我在数据库中的ticket_exported表类似于

----------------------------------
| ID | ticket_id | ticket_number |
----------------------------------
| 10 |     1     |     123123    |
----------------------------------
| 11 |     2     |     123124    |
----------------------------------

所以我的问题是,当我处理导出故障单时,是否有任何方法我可以进行单个查询以获取已关闭但ticket_idticket_number不在的所有故障单的列表ticket_exported表?因此,当我运行功能时,它应该获得ticket_id' 3'和' 4'因为它们不会导出到ticket_export数据库中。

如果我只能在一个查询中执行此操作,无论是原始SQL查询还是Django,我都不想查看所有可能的票证并逐个检查它们是否存在于导出票证表中查询。

谢谢大家。

2 个答案:

答案 0 :(得分:2)

你可以不用is_exported字段:

exported_tickets = TicketsExported.objects.all()
unexported_tickets = Tickets.object.exclude(id__in=[et.id for et in exported_tickets])

is_exported字段可能在其他地方有用

答案 1 :(得分:1)

根据我的评论 - 您可能可以省去一些麻烦,只需为'is_exported'添加另一个BooleanField,而不是假设没有特定于TicketExported的字段的单独模型。

@ doniyor的答案会为您提供您正在寻找的查询集。响应您的原始SQL语句问题:您需要:unexported_tickets.query