Извлечение только по столбцу в фильтре в 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)