我想把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
访问用户