在序列化程序上调用save()返回以下错误:
index
views.py
Original exception was:
Traceback (most recent call last):
File "C:\Users\aditya\AppData\Local\conda\conda\envs\myDjangoEnv\lib\site-packages\rest_framework\serializers.py", line 940, in create
instance = ModelClass.objects.create(**validated_data)
File "C:\Users\aditya\AppData\Local\conda\conda\envs\myDjangoEnv\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Users\aditya\AppData\Local\conda\conda\envs\myDjangoEnv\lib\site-packages\django\db\models\query.py", line 417, in create
obj.save(force_insert=True, using=self.db)
TypeError: save() got an unexpected keyword argument 'force_insert'
model.py
def post(self,request):
if request.method=='POST':
serializer = invoiceSerializers(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)
我无法理解为什么会发生这种情况以及如何解决。任何帮助表示赞赏。
答案 0 :(得分:4)
Model的 save()
方法接受很少的关键字参数,例如force_insert
,using
等。但是,您不是在您的重写方法中接受这些参数。
因此,将您的save()
方法更改为
class invoice(models.Model):
.....
.....
.....
# your code
def save(self, *args, **kwargs):
.....
.....
.....
# your code
super(invoice, self).save(*args, **kwargs)