繁体   English   中英

如何在Django ORM中获取另一个model中不存在的查询列表?

[英]How to get query list that does not exist in another model in Django ORM?

我有三个表:

表格1

class Table1(models.Model):
    field1 = model.CharField(...)
    field2 = model.CharField(...)

表2

class Table2(models.Model):
    field1 = model.CharField(...)
    field2 = model.CharField(...)

表3

class Table3(models.Model):
    table1 = model.ForeignKey(Table1)
    table2 = model.ForeignKey(Table2)

我想获取Table3中不存在的所有Table1数据,其中还包括Table2

例如:在Table1中,我有三行:rows1、rows2、rows3

表 2中,我有一行:r1

Table3我有一行: table1 = rows1 table2 = r1

当我在 Table3 中搜索Table2 s r1 时,我想从Table1中获取 rows2 和rows3

我可以使用此代码获得预期结果:

table3 = Table3.objects.filter(table2=Table2.objects.get(id=1)).values_list('table1')
queryset = Table1.objects.filter(~Q(id__in=table3 ))

我的问题现在有没有更好的方法来做到这一点?

谢谢

你可以使用.exclude(…) [Django-doc]

Table1.objects.exclude(table3__table2_id=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM