Всем привет. Есть две модели - категории и итемы:
class Category(models.Model):
name = models.CharField(max_length=200)
parent = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return self.name
class Item(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="items")
name = models.CharField(max_length=200)
phone = models.CharField(max_length=30)
def __str__(self):
return self.name
Вложенность категорий друг в друга может быть любой, поэтому внешним ключом ссылается на себя же. Например есть такая структура:
Категория1
..Подкатегория1.1
....Подкатегория1.1.1
......Итем
......Итем
....Подкатегория1.2
.......Итем
.......Итем
..Итем
..Итем
Соответственно, надо вывести такой же json.
Делаю через django rest framework так:
в serializers.py:
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ['category', 'name', 'phone']
class CategorySerializer(serializers.ModelSerializer):
items = ItemSerializer(many=True)
class Meta:
model = Category
fields = ['pk', 'name']
И во вьюхе пишу вот так:
queryset = Item.objects.all()
serializer = ItemSerializer(queryset, many=True)
json = JSONRenderer().render(serializer.data)
return HttpResponse(json, content_type='application/json')
Но получаю только json из итемов, без вложенности.
Уважаемые знатоки, подскажите как создать вложенность из категорий и итемов в них. Есть ли какой-то способ из коробки или придется формировать вручную?
Updated 3 Nov. 2018, 23:53 by link404.