首页 > 解决方案 > Django:删除重复数据

问题描述

我正在为我的应用程序使用 Django 和 React。我是 Django 休息框架工作的新手。我做了三个模型,它们ordercustomerproductsOrder模型与客户和产品具有多对一的关系。我成功地将数据提取到 React 前端。但问题是当我输入新条目时,例如:当用户订购新产品时。每次相同的用户名都是这样的前端。我检查了一些文档和 stackover-flow 问题,但没有找到正确的答案。我知道我需要在我的views.py's订单查询中做一些事情,但不知道怎么做。

这是我的模型

class Customer(models.Model):
    name = models.CharField(max_length=200, null= True)
    email =  models.CharField(max_length=20, null=True)
    phone = models.CharField(max_length=20, null=True)
    date_created= models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

class Tag(models.Model):
    name= models.CharField(max_length=200, null=True)

    def __str__(self):
        return self.name

class Product(models.Model):
    CATEGORY=(
         ('Indoor', 'Indoor'),
         ('Outdoor', 'Outdoor'),

            )

    name= models.CharField(max_length=200, null=True)
    price= models.FloatField(null=True)
    category=models.CharField(max_length=200,null=True, choices=CATEGORY)
    description= models.CharField(max_length=200,null=True, blank= True)
    date_created=models.DateTimeField(auto_now_add=True, null=True)
    tags= models.ManyToManyField(Tag)

    def __str__(self):
        return self.name


class Order(models.Model):
    STATUS =(
         ('Pending', 'Pending'),
         ('Out of delivery', 'Out of delivery'),
         ('Delivered', 'Delivered'),
    )
    status= models.CharField(max_length=200, null=True,choices= STATUS)
    date_created=models.DateTimeField(auto_now_add=True, null=True)
    customer = models.ForeignKey(Customer, null= True, on_delete= models.SET_NULL, related_name='orders')
    product = models.ForeignKey(Product, null= True, on_delete= models.SET_NULL, related_name='orders')

这是我的意见.py

@api_view(['GET'])
def orderList(request):
    orders = Order.objects.all()
    serializer = OrderSerializer(orders, many=True)
    return Response(serializer.data)

@api_view(['POST'])
def orderCreate(request):
    serializer = OrderSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
    return Response(serializer.data)

@api_view(['GET'])
def customerList(request):
    customers = Customer.objects.values_list('name', flat=True).distinct()
    serializer = CustomerSerializer(customers, many=True)
    return Response(serializer.data)


@api_view(['GET'])
def customerDetail(request, pk):
    customers = Customer.objects.get(id=pk)
    # orders = customers.order_set.all()
    serializer = CustomerWithProductsSerializer(customers, many=False)

    return Response(serializer.data)

这是我的序列化器

class OrderSerializer(serializers.ModelSerializer):
    customer = CustomerSerializer()
    product = ProductSerializer()
    class Meta:
        model = Order
        fields = ['status', 'customer', 'product']

标签: djangodjango-rest-frameworkdjango-queryset

解决方案


推荐阅读