首页 > 解决方案 > 检查对象是否已存在于 manytomany 字段中

问题描述

如果客户已经存在于客户的多对多字段中,我正在尝试给出“已经存在”的状态

查看类:

class CustomerAddition(View):
    def get(self, request, business_id, user_id):
        current_business = Business.objects.get(pk=business_id)
        customer = User.objects.get(pk=user_id)
        new_customer, created = Customers.objects.get_or_create(business_id_id = business_id)
        new_customer.save()
        list_of_customers = Customers.objects.get(business_id_id = business_id).customers.all()
        for value in list_of_customers:
            print(value)
            if value == User.objects.get(pk=user_id).name:
                return JsonResponse({"Status":"Already Exists"})
        new_customer.customers.add(customer)
        new_customer.save()

        return JsonResponse({"Status":"Success"})

模型:

class Customers(models.Model):
     customers = models.ManyToManyField('User')
     business_id = models.ForeignKey(Business, on_delete = models.CASCADE, related_name='owner')

     def __str__(self):
         return 1

每当我与同一个客户调用 API 时,它总是给出“成功”状态

打印(值)结果:

Sagar Aggarwal
Kartik Luthra

标签: djangopython-3.x

解决方案


您正在将Userobject 与User的名称(字符串)进行比较。

value == User.objects.get(pk=user_id).name

这将永远失败。试试这个:

value.name == User.objects.get(pk=user_id).name

推荐阅读