Извлечение только по столбцу в фильтре в DRF

Как получить только один столбец моей модели с помощью фильтра

ids = model1.objects.filter(key=value)
return model2.objects.filter(column__in=ids)

В приведенном выше примере первый фильтр должен вернуть список идентификаторов модели1 а во втором примере данные будут возвращены с использованием 1-го результата ids

NOTE: модель1 имеет несколько полей и одно из них - id

Вы можете выбрать только некоторые колонки с помощью values_list или values:

ids = Model1.objects.filter(key=value).values_list('id', flat=True)

Однако, если вы собираетесь фильтровать по этому, то этот запрос вообще избыточен (если я правильно понимаю вашу схему).

Рассмотрим следующие две модели:

class Model1(models.Model):
    name = models.CharField(max_length=50)

class Model2(models.Model):
    m1_ref = models.ForeignKey(Model1, models.CASCADE)

Тогда два следующих запроса эквивалентны (но первый медленнее):

ids = Model1.objects.filter(name=value).values_list('pk', flat=True)
result = Model2.objects.filter(m1_ref__in=ids)

и

result = Model2.objects.filter(m1_ref__name=value)
Вернуться на верх