У меня есть этот код, который для моих взглядов
class QuestionViewSet(viewsets.ModelViewSet):
queryset=Question.objects.all()
lookup_field="slug"
serializer_class=QuestionSerializer
permission_classes=[IsAuthorOrReadOnly,IsAuthenticated]
def perform_create(self, serializer):
print("user is", self.request.user)
serializer.save(author=self.request.user)
и этот код для сериализаторов
class QuestionSerializer(serializers.ModelSerializer):
author = serializers.StringRelatedField(read_only=True)
created_at = serializers.SerializerMethodField()
slug = serializers.SlugField(read_only=True)
answers_count = serializers.SerializerMethodField()
user_has_answered = serializers.SerializerMethodField()
print("author in serializer", author)
class Meta:
model = Question
exclude = ["updated_at"]
def get_created_at(self, instance):
return instance.created_at.strftime("%B %d, %Y")
def get_answers_count(self, instance):
return instance.answers.count()
def get_user_has_answered(self, instance):
request = self.context.get("request")
return instance.answers.filter(author=request.user).exists()
Тогда у меня есть этот код для моделей
class Question(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
content = models.CharField(max_length=240)
slug = models.SlugField(max_length=255, unique=True)
author = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="questions")
def save(self, *args, **kwargs):
if not self.id:
# Newly created object, so set slug
self.slug = slugify(self.content)
super(Question, self).save(*args, **kwargs)
Что я в основном не могу сделать, так это зарегистрировать запрос. В случае функции на основе я мог бы легко зарегистрировать запрос и посмотреть, какие данные поступают. Кроме того, я не понимаю, где данные сохраняются в случае пост-запроса. Я не вижу ничего, кроме как c. Просветите пожалуйста как это нормально работает?