Django Рекурсивный запрос с внешним ключом self
У меня есть следующая модель django с атрибутом parent в качестве внешнего ключа self
class PolicyCoverage(TimeStampedModel):
policy = models.ForeignKey(Policy, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
slug = AutoSlugField(populate_from='name', editable=True, slugify_function=slugify)
amount = models.DecimalField(max_digits=19, decimal_places=10)
parent = models.ForeignKey(
'self', on_delete=models.CASCADE,
null=True,
blank=True)
Я настроил свой сериализатор для отправки данных на front end, но я не получаю желаемого результата но я не получаю желаемого результата для простоты Я хочу получить данные таким образом
{parent A-->
{child A of parent A,
child B of parent A[
{child A of Parent B Child B of Parent A}
]
но данные, которые я получаю сейчас, такие
{parent A-->
{child A of parent A,
child B of parent A[
{child A of Parent B Child B of Parent A
}
]},
{child A of Parent B},
{Child B of Parent A}
Как заставить рекурсивный запрос работать Я перепробовал почти все предыдущие stack overflow qsn, но ничего не получается.
вот сериализатор, который я делал
class ParentSerializer(serializers.ModelSerializer):
class Meta:
model = PolicyCoverage
fields = [
'slug',
'policy',
'name',
'amount',
'parent'
]
class PolicyCoverageSerializer(serializers.ModelSerializer):
parent = serializers.SerializerMethodField()
class Meta:
model = PolicyCoverage
fields = [
'slug',
'policy',
'name',
'amount',
'parent'
]
def get_parent(self, obj):
value = PolicyCoverage.objects.filter(Q(parent=obj) | Q(parent__parent=obj), parent__isnull=False)
return ParentSerializer(value, many=True).data
class PolicyListSerializer(serializers.ModelSerializer):
policy_coverage = PolicyCoverageSerializer(
source='policycoverage_set', many=True)
class Meta:
model = Policy
fields = [
'policy_coverage'
]
Надеюсь, я смог объяснить свою проблему, спасибо за понимание.