Как фильтровать 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".