仅检索 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)
我如何使用过滤器只获取模型的一列
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)