python - 将 ForeignKey 设置为当前登录的用户 | Django Rest 框架 ViewSets
问题描述
我正在使用 Django Rest Framework 的 ViewSets 构建一个 REST API,但遇到了一个问题。在我的 API 上使用POST
请求时,我无法轻松地将当前登录的用户插入到模型中。
我序列化的模型如下:
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Question(models.Model):
op = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
body = models.TextField()
time_created = models.DateTimeField(auto_now_add=True)
给我问题的字段是op
字段,它是 Django 默认User
类的 ForeignKey。
此 API 有一个POST
用于在网站上创建新问题的 URL。我希望视图集将当前登录的用户插入到创建中。其他问题建议create()
在序列化程序上定义自定义方法,但这不起作用,因为我想插入当前登录的用户,而不是一组。
我的序列化器:
class QuestionSerializer(ModelSerializer):
class Meta:
model = Question
fields = ("op", "title", "body")
我的观点:
class QuestionViewSet(
mixins.UpdateModelMixin,
mixins.CreateModelMixin,
mixins.ListModelMixin,
mixins.RetrieveModelMixin,
GenericViewSet,
):
queryset = Question.objects.all()
serializer_class = QuestionSerializer
解决方案
添加到您的序列化程序以使用请求用户:
class QuestionSerializer(ModelSerializer):
op = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Question
fields = ("op", "title", "body")
推荐阅读
- python - numpy tofile 在每一行中放置单引号
- javascript - 循环常量,让图声明......如何解决?
- python - 将列表的最后两个整数的总和附加到同一个列表
- html - 是否可以仅使用引导程序来实现此布局?
- java - 使用 JavaAssist 修改现有类时出错
- css - 如何从 GitHub 以不同的权重显示 Noto Sans?
- python - 使用多列定义的频率填充 groupby 中的缺失日期
- vue.js - 动态绑定到这个 vuejs
- node.js - 多个 node.js “需要”会影响生产运行时间吗?
- java - 如何将具有可变大小的嵌套对象数组设置为 javafx TableView TableColumns 的源