您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django REST框架:“此字段是必需的.”with required = False和unique_together

5b51 2022/1/14 8:23:12 python 字数 3416 阅读 553 来源 www.jb51.cc/python

我想用Django REST Framework保存一个简单的模型.唯一的要求是在perform_create()方法中自动设置UserVote.created_by.这个例外失败了: { "created_by": [ "This field is required." ] } 我想这是因为unique_together索引. models.py: class U

概述

{
    "created_by": [
        "This field is required."
    ]
}

我想这是因为unique_together索引.

models.py:

class UserVote(models.Model):
    created_by = models.ForeignKey(User,related_name='userVotes')
    rating = models.ForeignKey(rating)

    class Meta:
        unique_together = ('created_by','rating')

serializers.py

class UserVoteSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(read_only=True)
    created_by = UserSerializer(read_only=True)

    class Meta:
        model = UserVote
        fields = ('id','rating','created_by')

views.py

class UserVoteViewSet(viewsets.ModelViewSet):
    queryset = UserVote.objects.all()
    serializer_class = UserVoteSerializer
    permission_classes = (IsCreatedByOrReadOnly,)

    def perform_create(self,serializer):
        serializer.save(created_by=self.request.user)

如何在不让用户提供created_by的情况下将模型保存在DRF中,而是在代码自动设置此字段?

提前致谢!

def create(self,request,*args,**kwargs):
    uv = UserVote(created_by=self.request.user)
    serializer = self.serializer_class(uv,data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data,status=status.HTTP_201_CREATED)
    else:
        return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

总结

以上是编程之家为你收集整理的python – Django REST框架:“此字段是必需的.”with required = False和unique_together全部内容,希望文章能够帮你解决python – Django REST框架:“此字段是必需的.”with required = False和unique_together所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶