Django:"create()"没有返回对象实例



我正在尝试使用 Django 1.11.2 在 restful API 中创建注释。目前,我正在从"CodingEntrepreneurs"中学习教程"Blog API with Django Rest Framework"。我不知道问题出在哪里。

这是序列化程序代码:

def create_comment_serializer(model_type='post', slug=None, parent_id=None, user=None):
class CommentCreateSerializer(ModelSerializer):
class Meta:
model = Comment
fields = [
'id',
'content',
'timestamp',
]
def __init__(self, *args, **kwargs):
self.model_type = model_type
self.slug = slug
self.parent_obj = None
if parent_id:
parent_qs = Comment.objects.filter(id=parent_id)
if parent_qs.exists() and parent_qs.count() ==1:
self.parent_obj = parent_qs.first()
return super(CommentCreateSerializer, self).__init__(*args, **kwargs)
def validate(self, data):
model_type = self.model_type
model_qs = ContentType.objects.filter(model=model_type)
if not model_qs.exists() or model_qs.count() != 1:
raise ValidationError("This is not a valid content type")
SomeModel = model_qs.first().model_class()
obj_qs = SomeModel.objects.filter(slug=self.slug)
if not obj_qs.exists() or obj_qs.count() != 1:
raise ValidationError("This is not a slug for this content type")
return data
def create(self, validated_data):
content = validated_data.get("content")
if user:
main_user = user
else:
main_user = User.objects.all().first()
model_type = self.model_type
slug = self.slug
parent_obj = self.parent_obj
comment = Comment.objects.create_by_model_type(
model_type, slug, content, main_user,
parent_obj=parent_obj
)
return comment
return CommentCreateSerializer

这是视图代码:

class CommentCreateAPIView(CreateAPIView):
queryset = Comment.objects.all()
#serializer_class = PostCreateUpdateSerializer
permission_classes = [IsAuthenticated]
def get_serializer_class(self):
model_type = self.request.GET.get("type")
slug = self.request.GET.get("slug")
parent_id = self.request.GET.get("parent_id", None)
return create_comment_serializer(
model_type=model_type,
slug=slug,
parent_id=parent_id,
user=self.request.user
)

不知何故,您的Comment.objects.create_by_model_type()没有创建任何对象,并且create()方法没有找到要返回的任何内容。

最新更新