Как сериализовать сквозные отношения в 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