Ich versuche, einen Kommentar in einer erholsamen API mit Django 1.11.2 zu erstellen. Momentan füge ich das Tutorial "Blog API mit Django Rest Framework" von "CodingEntrepreneurs" hinzu. Ich weiß nicht, was das Problem ist.Django: `create()` hat keine Objektinstanz zurückgegeben
Dies ist der Code Serializer:
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
dies ist der Ansicht Code:
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
)
Was ergibt 'ContentType.objects.filter (model = model_type) '? Denn wenn Sie das Original ['create_by_model_type()'] verwenden (https://github.com/codingforentrepreneurs/Blog-API-with-Django-Rest-Framework/blob/ebce1ea22d6a70325c0f18ede52f44dc9a4671d5/src/comments/models.py#L36) Wenn der Typ nicht gefunden wurde, wird 'None' zurückgegeben. – dhke
danke! habe den fehler dort nicht gesehen, war nur auf die api fokussiert. –