Как фильтровать на основе поля в пользовательской сквозной модели с помощью сериализатора rest?

У меня есть две модели с отношением многие ко многим. Таблица many2many создана и связана с родительскими таблицами атрибутом 'through'.

ModelA(modles.Model):
  name = charfield()

ModelB(models.Model):
  subject = charfield(default=1, choices = [1,2,3])
  people = ManyToManyField(ModelA, through="MOdelAB")

ModelAB(models.Model):
  status = integerfield()
  modela_id = foreignkey()
  modelb_id = foreignkey()
  
ModelB_Serializer(serializers.Serializer):
  modela = ModelASerailizer(many=True)

  class Meta:
      model = ModelB
      exclude = ...
      fields = ...
      depth = 1

Это возвращает все объекты A в сквозной таблице, но я хочу отфильтровать только те, у которых статус=99.

Есть ли хороший способ сделать это?

Сначала нужно установить поле related_name так, чтобы можно было получить доступ к сквозному полю из ModelA.

ModelB(models.Model):
    subject = charfield(default=1, choices = [1,2,3])
    people = ManyToManyField(ModelA, through="ModelAB", related_name="objects")

Тогда вы можете фильтровать, используя это имя.

ModelA.objects.filter(objects__status = 99)
Вернуться на верх