0

类类别(MP_Node):名称 = models.CharField(max_length=50,unique=True) slug = models.SlugField(max_length=50,unique=True,null=True)

      node_order_by = ['name']
            
      def save(self, *args, **kwargs):
          if not self.slug:
             slug = self.name
             self.slug = slugify(slug)
             super(Category, self).save(*args, **kwargs)
            
      def get_absolute_url(self):
          return reverse('brands', args=[self.slug])
            
      def __str__(self):
          return self.name
        
       
class CategorySerializer(ModelSerializer):
      class Meta:
          model = Category
          fields = '__all__'
                read_only_fields = ['slug']
        
        
        class CategoryCreateSerializer(ModelSerializer):
            parent_id = SerializerMethodField(allow_null=True, method_name='parent_id', read_only=True)
        
            def get_parent_id(self, data):
                if 'parent_id' in data:
                    return data['parent_id']
                else:
                    return None
        
            class Meta:
                model = Category
                fields = ('name', 'parent_id')
                read_only_fields = ['parent_id']
        
            def create(self, validated_data, *args, **kwargs):
                value = self.initial_data.dict()
                parent_id = self.get_parent_id(value)
                if parent_id is None:
                    data = Category.add_root(**validated_data)
                    value = Category.objects.get(id=data.id)
                    data_serializer = CategoryCreateSerializer(value)
                    return Response(data_serializer.data, status=status.HTTP_201_CREATED)
                else:
                    if Category.objects.filter(id=parent_id).exists():
                        date = Category.objects.get(id=parent_id)
                        value = date.add_child(**validated_data)
                        return Response(value.name)
    
    
    class CategoryModelViewSet(ModelViewSet):
        queryset = Category.objects.all()
        lookup_field = 'slug'
    
        def get_serializer_class(self):
            if self.action == 'create':
                return CategoryCreateSerializer
            else:
                return CategorySerializer

'CategoryCreateSerializer' 对象没有属性 'parent_id' 我应该在 Response 中返回什么?E:\nth\django_tree_drf\venv\lib\site-packages\rest_framework\fields.py,第 1885 行,在 to_representation 中

4

0 回答 0