仅检索 DRF 过滤器中的列

Retrieve only on column in filter in DRF

我如何使用过滤器只获取模型的一列

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

在上面的示例中,第一个过滤器应该 return model1 的 ID 列表 在第二个示例中,数据将是 return 使用第一个结果 ids

注意:model1 它有多个字段,一个是 id

您可以 select 只有一些列使用 values_list or 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)