django-rest-framework - save() 得到了一个意外的关键字参数“所有者”
问题描述
模型.py
class Video(models.Model):
obj = models.FileField()
owner = models.ForeignKey(Profile,on_delete=models.CASCADE)
dis = models.TextField()
title = models.ForeignKey(Title,on_delete=models.CASCADE,default=0)
def __str__(self):
return self.dis
序列化程序.py
class VideoSerializer(serializers.ModelSerializer):
#owner = serializers.PrimaryKeyRelatedField(many=False, read_only=True)
class Meta:
model = Video
fields = ['obj','dis','owner','title']
def save(self,validated_data):
request = self.context.get("request")
v = Video(
obj = validated_data.get('obj'),
dis = validated_data.get('dis'),
owner = Profile.objects.get(user=request.user),
)
v.save()
return v
def update(self, instance, validated_data):
request = self.context.get("request")
instance.title = validated_data.get('title',instance.title)
instance.dis = validated_data.get('dis', instance.dis)
if instance.owner == request.user:
instance.save()
return instance
视图.py
class VideoView(viewsets.ModelViewSet):
serializer_class = VideoSerializer
queryset = Video.objects.all()
def perform_create(self, serializer):
user = self.request.user
serializer.save(owner=Profile.objects.get(user=user))
嗨,大家好!我尝试使用 DRF 序列化程序将模型保存在数据库中,但出现错误....如果您能帮助我,我将不胜感激。我的错误出现在序列化程序中的 save() 方法中
解决方案
您不应覆盖save
方法定义中的参数。而是使用这个:
def save(self):
owner = self.validated_data.get('owner')
...
参考: https ://www.django-rest-framework.org/api-guide/serializers/#overriding-save-directly
推荐阅读
- javascript - 量角器,迭代元素:失败:过时的元素引用
- android - 是否可以将应用程序连接到蓝牙设备而无需配对或在搜索之前对设备一无所知?
- hive - 如何在 Hive 中保留最近的记录?
- java - 如何在 kotlin 中使用非静态方法?
- bash - Bash 别名:fork a repo 然后 cd 并安装
- php - 如何使用 PHP 通过 DI Server 连接到 Web 服务(B1WS)?
- apache - (EAI 2)名称或服务未知:mod_unique_id:无法找到“ae537564806a”的 IPv4 地址
- twilio - 如何在 android 中管理与 twilio 频道的聊天
- spring-boot - Spring Boot 2.0.0 的 Consul 问题
- android - 使用网络摄像头在模拟器(android studio)上运行 ARCore 项目