gpt4 book ai didi

python - 如何将用户关联到 Django drf 中的发布请求

转载 作者:行者123 更新时间:2023-12-05 08:22:36 25 4
gpt4 key购买 nike

我有以下内容:

我正在使用基于 JWT token 的 DRF。我想将一个实验与用户相关联,即当发布请求到达时,我希望能够使用发送请求的用户为作者所需的 Foreginkey 保存该发布请求。POST 请求始终经过身份验证并且从不匿名,即 request.user 始终存在(我在调试时可以看到它)

我尝试添加以下内容

def create(self, request, **kwargs):
request.data["author"] = request.user
serializer = ExperimentsSerializers(data=request.data)
if serializer.is_valid():
serializer.save()
return....

但是 is_valid 总是返回 False(唯一一次 ts 为真,是当我从 ExperimentsSerializers 字段中取出作者时....

会为任何线索感到高兴....

下面附上我的代码

模型.py:

class User(AbstractUser):
pass

def __str__(self):
return self.username

class Experiments(models.Model):
name = models.CharField(max_length=40)
time = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

View.py:

filter_backends = [DjangoFilterBackend, filters.OrderingFilter]
serializer_class = ExperimentsSerializers
queryset = Experiments.objects.all()
filterset_fields = '__all__'
permission_classes = (permissions.IsAuthenticated,)

序列化器.py

class ExperimentsSerializers(serializers.ModelSerializer):
class Meta:
model = models.Experiments
fields = '__all__'

最佳答案

您可以使用 save 传递额外的数据参数:

def create(self, request, **kwargs):
serializer = ExperimentsSerializers(data=request.data)
if serializer.is_valid():
serializer.save(author=request.user)

请注意,您可能需要将 author 字段指定为 read_only因此在请求正文中不需要:

class ExperimentsSerializers(serializers.ModelSerializer):
class Meta:
model = models.Experiments
fields = '__all__'
read_only_fields = ['author']

关于python - 如何将用户关联到 Django drf 中的发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60074984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com