Python 如何检查Django rest框架中是否存在数据

Python 如何检查Django rest框架中是否存在数据,python,django,api,django-rest-framework,django-serializer,Python,Django,Api,Django Rest Framework,Django Serializer,我有一个CartModel,CartItem模型。当我创建一个购物车,当购物车被创建时,我尝试这样做,并且再次添加与我在pervious中输入的数据相同的数据,以创建另一个购物车。 我试图这样做,如果CartItem表中存在cart,它必须显示响应“cart已经存在”。 但它正在创建另一个购物车。我搜索了很多并使用了代码,但它不会运行。 如果有人能够给出答案,请帮助我。 视图.py* 序列化程序.py 型号.py 您可以在CartItem模型中使用unique=True。 如果您试图使用此选项保

我有一个CartModel,CartItem模型。当我创建一个购物车,当购物车被创建时,我尝试这样做,并且再次添加与我在pervious中输入的数据相同的数据,以创建另一个购物车。 我试图这样做,如果CartItem表中存在cart,它必须显示响应“cart已经存在”。 但它正在创建另一个购物车。我搜索了很多并使用了代码,但它不会运行。 如果有人能够给出答案,请帮助我。

视图.py*

序列化程序.py

型号.py


您可以在CartItem模型中使用
unique=True
。 如果您试图使用此选项保存重复的值,django将引发错误

cart = models.ForeignKey('CartModel', on_delete=models.CASCADE, unique=True)

不,兄弟,我不想这样,我想如果用户再次发布相同的数据,它会返回响应“购物车已经存在”,并尝试/但您可以“捕获”错误并打印(“购物车已经存在”)。这就是你想要的对吧?是的我不喜欢这样。你能帮我吗?你是否已经尝试添加“unique=True”并捕获错误了?
from rest_framework import serializers
from .models import CartItem, CartModel
from rest_framework.response import Response

class CartItemSerializer(serializers.ModelSerializer):
    def get_total(self, obj):
        return obj.get_total
    get_total = serializers.IntegerField(read_only=True, required=False)
    # id = serializers.IntegerField(read_only=False)
    class Meta:
        model = CartItem
        fields = "__all__"
        extra_fields = ['get_total']
        read_only = ['get_total']

class CartModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = CartModel
        fields = "__all__"

from django.db import models
from accounts.models import User, SubCategory
from category.models import Defects
from django.utils import timezone
# Create your models here.

class CartModel(models.Model):
    user = models.ForeignKey('accounts.User', on_delete=models.CASCADE)
    status_choice = [
        ('1', 'open'),
        ('2', 'closed')
    ]
    status = models.CharField(max_length=2, choices=status_choice, default=1)
    
    def __str__(self):
        return self.user.username
    
class CartItem(models.Model):
    cart = models.ForeignKey('CartModel', on_delete=models.CASCADE)
    user = models.ForeignKey('accounts.User', on_delete=models.CASCADE)
    service = models.ForeignKey('accounts.SubCategory', on_delete=models.CASCADE)
    defects = models.ForeignKey('category.Defects', on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)
    price = models.IntegerField()
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now_add=True)


    def __str__(self):
        total = int(self.quantity) * int(self.price)
        return str(total)

    
    def get_total(self):
        total = int(self.quantity )* int(self.price)
        return total
cart = models.ForeignKey('CartModel', on_delete=models.CASCADE, unique=True)