Как сериализовать сквозные отношения в django

Я располагаю свои модели вот так

class individual(models.Model):
    individualName = models.CharField(*args)

class family(models.Model):
    familyName = models.CharField(*args)
    individuals = models.ManyToManyField(individual, through='individualthroughfamily')

class individualthroughfamily(OrderedModel):
    family = models.ForeignKey(family)
    individual = models.Foreignkey(individual)
    order_with_respect_to = 'family'

    class Meta:
        ordering = ['family', 'order']

Здесь "OrderedModel" - это приложение с открытым исходным кодом, доступное для Django.

Итак, теперь я хочу сериализовать модель семьи так, чтобы получить вложенные особи в соответствии с порядком, определенным в третьем классе. Но я не могу найти свой путь, и это становится слишком запутанным. Буду рад ответить на любые вопросы

Вы можете использовать SerializerMethodField, и упорядочить индивидуальный набор запросов, используя сквозное отношение:

class FamilySerializer(serializers.ModelSerializer)
    class Meta:
        model = Family
        fields = [
            'family_name',
            'individuals'
        ]
    
    individuals = serializers.SerializerMethodField()

    def get_individuals(self, obj):
        individuals = obj.individuals.order_by('individualthroughfamily__order')
        return IndividualSerializer(individuals, many=True).data

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