我有一个类似下面的模型
Class Product(models.Model):
name = models.CharField(max_length=255)
price = models.IntegerField()
假设我们在数据库中有4 product
个记录,无论如何都要检查所有4个产品记录是否都有same price
?
我不想遍历所有产品,因为数据库中可能有thousands
个产品记录,这样做会成为性能问题。
所以我正在寻找像使用内置django数据库ORM来做这件事
check_whether_all_the_product_records_has_same_price_value = some django ORM operation......
if check_whether_all_the_product_records_has_same_price_value:
# If all the Product table records(four) has the same price value
# return the starting record
return check_whether_product_has_same_price_value(0)
所以有人可以告诉我们我们怎么做?
答案 0 :(得分:1)
可以建议您使用filter
if Product.objects.all().count() == Product.objects.filter(price=price).count():
pass
或使用distinct
if Product.objects.all().products.distinct('price').count() == 1:
pass
请注意,此示例仅适用于Portgres。
您也可以使用annotate
计算我认为的计数
if Product.objects.all().values('price').annotate(Count('price')).count() == 1:
pass
答案 1 :(得分:0)
您可以使用distinct来查找唯一价格:
products = Product.objects.filter([some condition])
prices = products.values_list('price', flat=True).distinct()
然后检查价格的长度。