выборка значений из двух таблиц на основе каждой таблицы, имеющей различные условия в django ORM - PullRequest
0 голосов
/ 05 марта 2019

У меня есть 2 модели test1 и test2.я хочу запросить состояние статуса из test1 и состояние прогресса в test2.

class 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)

я хочу запросить что-то вроде progess> 7 в модели test2 и istatus = 1 в модели test1 и общее поле для обеих таблиц равно iEID

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете сделать это следующим образом.

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_queryset и test2_queryset будут иметь объекты, чьи progess > 7, istatus = 1 и общие iEID

...