Как фильтровать на основе поля в пользовательской сквозной модели с помощью сериализатора 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)