У меня нет возврата родителя в продуктах rest api django.когда я запрашиваю подкатегории в url, показать родительскую рекурсию, но когда я запрашиваю продукты в url, родительское поле пусто.Пожалуйста, помогите мне, спасибо.
serializers.py: я использовал RecursiveField.
from rest_framework import serializers
from products.models import Product, SubCategory
from rest_framework_recursive.fields import RecursiveField
class SubCategorySerializer(serializers.ModelSerializer):
parent = serializers.ListField(read_only=True, source='get_children', child=RecursiveField())
class Meta:
model = SubCategory
fields = ('id', 'name', 'parent',)
class ProductSerializer(serializers.ModelSerializer):
subcategory = SubCategorySerializer(read_only=True)
class Meta:
model = Product
fields = ('id', 'name', 'subcategory',)
файл models.py
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class SubCategory(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
class MPTTMeta:
level_attr = 'mptt_level'
order_insertion_by = ['name']
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=128)
subcategory = models.ForeignKey(SubCategory, on_delete=models.CASCADE, null=True, blank=True, default=None)
def __str__(self):
return self.name
urls.py
from products.views import (ProductViewSet,
SubCategoryViewSet)
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'products', ProductViewSet, basename='product')
router.register(r'sub-categories', SubCategoryViewSet, basename='subcategory')
views.py
from products.models import Product, SubCategory
from products.serializers import ProductSerializer, SubCategorySerializer
from rest_framework import mixins, generics
# Create your views here.
class ProductViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
serializer_class = ProductSerializer
queryset = Product.objects.all()
class SubCategoryViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
serializer_class = SubCategorySerializer
queryset = SubCategory.objects.all()
http://127.0.0.1:8000/sub-categories/ ==> показать родителя: введите описание изображения здесь
http://127.0.0.1:8000/products/ ==> не показывает родителя введите описание изображения здесь