Django rest framework вложенные категории
для категоризации товаров написаны вложенные категории. Когда мы работали с самим Django, для отображения вложенных категорий в разделе navbar, мы использовали отображение и главной, и вложенных категорий с помощью четырех циклов дважды
Мой вопрос заключается в том, что теперь, когда я хочу написать код в django rest framework для отображения вложенных категорий, в дополнение к коду ниже, нужно ли мне сделать что-нибудь еще?
На самом деле, меня беспокоит вопрос о том, как вложенная категория вызывается и отображается внешним программистом?
my model :
class Category(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
sub_category = models.ForeignKey('self', on_delete=models.CASCADE, related_name='sub')
sub_cat = models.BooleanField(default=False)
slug = models.SlugField(allow_unicode=True, unique=True, null=True, blank=True)
class Product(models.Model):
name = models.CharField(max_length=200, null=True, blank=True)
category = models.ManyToManyField(Category, blank=True, related_name='cat_product')
unit_price = models.IntegerField()
my url :
path('category/', views.CategoryListApi.as_view()),
path('category/<slug:slug>/', views.CategoryProductsApi.as_view()),
my view:
class CategoryListApi(generics.ListAPIView):
queryset = Category.objects.all()
serializer_class = CategorySerializer
class CategoryProductsApi(generics.ListAPIView):
serializer_class = ProductSerializer
def get_queryset(self):
products = Product.objects.filter(category__slug=self.kwargs['slug'])
return products
my serializer:
class ProductSerializer(serializers.ModelSerializer):
category = serializers.SerializerMethodField()
class Meta:
model = Product
fields = '__all__'
def get_category(self, obj):
return [cat.name for cat in obj.category.all()]
class CategorySerializer(serializers.ModelSerializer):
sub_category = serializers.SlugRelatedField(read_only=True, slug_field='name')
class Meta:
model = Category
fields = '__all__'