问题描述
我有一个Cart模型和Cartserializer。我正在尝试这样做,如果购物车中存在购物车缺陷,然后通过增加购物车的数量来更新购物车。我为此做了很多尝试。但这每次每次 都必须生成一个错误,然后才能对响应内容进行迭代 。
这是我的代码:)
views.py *
class CartViewSet(viewsets.ModelViewSet):
serializer_class = CartSerializer
permission_classes = (IsAuthenticated,)
def get_queryset(self):
user = self.request.user
if user.is_authenticated:
if user is not None:
if user.is_active and user.is_superuser or user.is_Customer:
return Cart.objects.all()
raise PermissionDenied()
raise PermissionDenied()
raise PermissionDenied()
filter_backends = [DjangoFilterBackend]
filterset_fields = ['date_created','user']
@action(detail=False)
def count(self,request):
queryset = self.filter_queryset(self.get_queryset())
count = queryset.count()
content = {'count': count}
return Response(content)
def create(validated_data,get):
quantity,created = Cart.objects.update_or_create(
user = validated_data.get('user',None),defects=validated_data.get('defects',defaults={'quantity': validated_data.get('quantity' + str(1),None)})
return quantity
if quantity is created.create:
return Response ({
'status' : True,"detail" : "created"
})
if quantity is created.update:
return Response ({
'status' : True,"detail" : "updated"
})
models.py
from django.db import models
from accounts.models import User,SubCategory
# Create your models here.
class Cart(models.Model):
user = models.ForeignKey('accounts.User',related_name="carts",null=True,on_delete=models.SET_NULL)
quantity = models.IntegerField(default=1)
service = models.ForeignKey('accounts.SubCategory',on_delete=models.SET_NULL)
defects = models.ForeignKey('defects',on_delete=models.SET_NULL)
price = models.IntegerField(default=False)
date_created = models.DateTimeField(auto_Now_add=True)
total = models.IntegerField(blank=True,null=True)
def __str__(self):
return self.user.username
serializers.py
from rest_framework import serializers
class CartSerializer(serializers.ModelSerializer):
class Meta:
model = Cart
fields = ['id','url','user','service','defects','date_created','quantity','price','total']
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)