/apis/addtoCart NOT NULL约束处的IntegrityError Django和API失败



我正在尝试将数据插入我的OrderItem((模型:

class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)

带有json数据的api如下:

{ "username": "admin",
"item": "Kavya",
"quantity": "1"
}

在我看来,我收到了这些数据,并更新为:

class addtoCart(APIView):
# permission_classes=[IsAuthenticated,]
# authentication_classes=[TokenAuthentication,]
def post(self,request):
username=request.data["username"]
itemname=request.data["item"]
quant=request.data["quantity"]
#inserting data to cart
article = OrderItem()
article.User = username
article.Item = itemname
article.quantity=quant
article.save()

query=OrderItem.objects.filter(user=username)
serializers=OrderItemSerializer(query,many=True)
return Response(serializers.data)

但每当我尝试这样做时,我都会得到一个错误:

/api/addtoCart上的IntegrityErrorNOT NULL约束失败:core_orderitem.item_id

我不知道是什么原因导致了这个错误,有人能帮忙吗<3.

您需要在请求体中传递一个id或其他唯一约束,以便确定要将哪个Item对象设置为article实例,例如:

{
"username": "admin",
"item_id": <id>,
"quantity": "1"
}

并且在您的post方法中:

from django.shortcuts import get_object_or_404
def post(self,request):
username = request.data["username"]
item_id = request.data["item_id"]
quant = request.data["quantity"]
# since `user` is also a foreign key reference i would suggest you to query it, too
user = get_object_or_404(User, username=username)
article = OrderItem()
# set the attributes as lowercase
article.user = user
# Django creates an extra field `<foreign_key>_id` for related objects, so that you can set it without querying
article.item_id = item_id
article.quantity = quant
article.save()
# ...

但我建议您使用DRF序列化程序来处理request.data

最新更新