只显示子查询的总行数小于django queryset中某个值的对象



我试图生成一个特定模型的列表,其中只有来自另一个查询的实例。这是我的模型:

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

提前谢谢你:)

好的,我想我可能做对了。现在我对我的问题有了一个更新,考虑到我已经得到了与选择相关的计数,我如何在计数模型上进行过滤,所以如果我只想计数服务在我到达后结束的服务,我该如何计数呢?这是我当前的行:

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

基于这个答案

最新更新