Как фильтровать queryset изнутри сериализатора?

Я хочу всегда применять фильтр к сериализатору (фильтровать набор запросов). Допустим, у меня есть:

class Company(models.Model):
  name = models.CharField(max_length=90, unique=True)
  city = models.CharField(max_length=90,)
  active = models.BooleanField(default=True)

class CompanySerializer(serializers.ModelSerializer):
  class Meta:
    model=Company
    fields=['id', 'name', 'city']

поэтому, когда я вызываю сериализатор для списка, отфильтрованного по городу (или любым другим полям, добавленным в моем реальном коде), как показано ниже, он возвращает компании из этого города и только "active=True"

query_set = Company.objects.filter(city=request.POST(city) )
srl = serializers.CompanySerializer(query_set, many=True)
return Response(srl.data)

Потому что я могу захотеть вызвать сериализатор из других частей кода. и я хочу хранить записи для справки, но никогда не показывать ни одному клиенту. Я пытался модифицировать queryset из init, но это не работает. Я действительно печатаю() измененный набор запросов, чтобы убедиться, что он был отфильтрован, и он печатает отфильтрованный набор запросов, я делаю:

def __init__(self, instance=None, data=empty, **kwargs):
    instance.filter(active=False)
    self.instance = instance
    print(self.instace) #this prints the filtered queryset OK

но он отправляет ответ без фильтра "active=False".

Вернуться на верх