如何在django中传递数据给序列化器



我想把user_id从视图传递给序列化器我有模型答案

class Answer(models.Model) :

text = models.CharField(max_length=500)
question_id = models.CharField(max_length=25)
user_id = models.CharField(max_length=25, default=1)

这是我的序列化器

class CreateAnswer(generics.CreateAPIView) :
def get_serializer_context(self):
context = super().get_serializer_context()
context["id"] = self.request.user.id
return context
serializer_class = AnswerQuestionSerializer
queryset = Answer.objects.all()

我需要在我的视图中写什么来获取user_id并使用这个user_id创建模型?

您可以重写perform_create方法&将user_id字段传递给序列化器的save方法

class CreateAnswerView(generics.CreateAPIView) :
serializer_class = AnswerQuestionSerializer
def perform_create(self, serializer):
serializer.save(user_id=self.request.user.id)

您可以使用序列化器。在序列化器类

中获取当前用户https://www.django-rest-framework.org/api-guide/fields/hiddenfield

执行此任务有多种方法。其中之一是重写序列化器中的create。以下是代码片段:

class BlogSerializer(serializers.Serializer):
def create(self, validated_data):
user = self.context['request'].user
blog = Blog.objects.create(
user=user, 
**validated_data
)
return blog

解释:默认情况下,将上下文传递给包含请求的序列化器。所以你可以用self。context['request'].user

访问用户

最新更新