类类别(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 中