我有账单和客户服务。我会让那些在前一天买东西的用户。
如何使用帐单模型获取用户数?
我将统计此查询的不同用户:
recived = Bill.objects.filter(status=2,pay_status=True)
Bill
模型:
class Bill(models.Model):
number = models.CharField(max_length=20,default="")
desc = models.TextField(null=True,blank=True,default="")
total = models.IntegerField(default=0)
discount = models.IntegerField(default=0)
total_tax = models.IntegerField(default=0)
total_discount = models.IntegerField(default=0)
total_payed = models.IntegerField(default=0)
pay_status = models.BooleanField(default=False)
status = models.IntegerField(default=1)
transport = models.ForeignKey(Transport,null=True,blank=True)
address = models.ForeignKey(Address,null=True,blank=True)
user = models.ForeignKey(User)
product = models.ManyToManyField(Product,related_name='Bill_product',through="Bill_product")
create_time = models.DateTimeField(auto_now_add=True)
答案 0 :(得分:1)
如果Bills可能变得非常大,我可能会使用自定义SQL查询。类似的东西:
from django.db import connection
sql = """
SELECT COUNT(DISTINCT user_id)
FROM your-app-name_bill
WHERE status=2
AND pay_status=True;
"""
cursor = connection.cursor()
cursor.execute(sql)
cursor.fetchall()
或者,您可以使用用户ID填充列表,然后在列表上调用set()以使它们不同:
users = [x.user_id for x in Bill.objects.filter(status=2, pay_status=True)]
distinct_count = len(set(users))
答案 1 :(得分:-1)
您可以在查询集上使用count方法,如下所示
Bill.objects.filter(status=2,pay_status=True).count()
请参阅此处.. count