在Django ORM中,基于具有不同条件的每个表从两个表中获取值

时间:2019-03-05 07:12:13

标签: django django-models orm django-views

我有2个模型test1和test2。 我想从test1查询状态条件,并在test2中查询进度条件。

课程test1:

iID                     = models.AutoField(primary_key=True)
iEID                    = models.BigIntegerField(_("EID"),default=0)
istatus                 = models.BooleanField(_("Status"),default=0)

class test2:

iid                     = models.AutoField(primary_key=True)
iEID                    = models.BigIntegerField(_("EID"),default=0)
progress                = models.IntegerField(_("pgs"),blank=True,null=True)

我要查询test2模型中的进度> 7,而test1模型中的istatus = 1以及两个表的公共字段都是 iEID

1 个答案:

答案 0 :(得分:1)

您可以这样做。

test1_list = test1.objects.filter(istatus=1).values_list('id','iEID')

test2_queryset = test2.objects.filter(progress__gt=7, iEID__in=[y for x, y in test1_list] )

test1_queryset = test1.objects.filter( iEID__in=test2_queryset.values_list('iEID') , id__in = [x for x, y in test1_list])

现在test1_querysettest2_queryset将具有其progess > 7istatus = 1和公共iEID

的对象