如何解决django查询集中只显示子查询总行数小于某个值的对象
我正在尝试生成某个模型的列表,其中只有来自另一个查询的实例。所以这是我的模型:
class Waiter(models.Model):
id = models.AutoField(primary_key=True)
waiter = models.CharField(max_length=200)
class Service(models.Model):
id = models.AutoField(primary_key=True)
arrival = models.DateTimeField(auto_now_add=True)
exit = models.DateTimeField(null=True,blank=True)
waiter = models.ForeignKey('Waiter',on_delete=models.CASCADE)
article = models.ForeignKey('Table',on_delete=models.CASCADE)
total_amount= models.DecimalField(max_digits=15,decimal_places=2)
class Table(models.Model):
id = models.AutoField(primary_key=True)
table_no = models.CharField(max_length=200)
这个想法是一次只能分配四名服务员。如何根据天气过滤服务员的结果,他们一次提供的服务少于四项?
这是我目前正在做的信号:
@reciever(pre_save,sender=Service)
def prepare_service(sender,instance,*args,**kwargs):
if instance.id = None:
time = datetime.now()
# check if waiter has less than four services HERE
# the following code is WRONG
current_services = Service.objects.filter(exit__gt=time)
available_waiters = Waiter.objects.select_related\
(waiter__in=Subquery())
#check if waiter has less than four services
先谢谢你:)
编辑:好的,我想我可能已经做对了。现在我对我的问题进行了更新,因为我已经依赖与 select 相关的如何在计数模型上进行过滤,所以如果我只想计算到达后服务结束的服务,我该怎么做在计数吗?
这是我当前的行:
waiters = Waiter.objects.select_related('Service').annotate(num_Service=Count('Service',filter=Q(exit__gt=time)))
解决方法
from django.db.models import Count
q = Waiter.objects.select_related('Service').annotate(num_Service=Count('Service'))
print Waiter[0].num_Service
基于此answer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。