【发布时间】:2019-02-06 16:10:16
【问题描述】:
我想在计数之前过滤结果。在下面的代码中,我正在计算每个票务柜台的工人总数。
class TicketCounterList(ListAPIView):
queryset = TicketCounter.objects.filter(ticket_counter_is_deleted=False)
.annotate(num_workers=Count('workers'))
serializer_class = TicketCounterSerializer
上述代码中的workers 是来自另一个模型(WorkerToTicketCounter 模型)的related_name。我想要做的是,我希望能够过滤条件为is_deleted= True 的工人,而不是计算所有工人。可能吗?我正在使用 Django 1.11.13
有没有像下面这样的
queryset = TicketCounter.objects.filter(ticket_counter_is_deleted=False)
.annotate(num_workers=Count('workers',filter="xxxx"))
明白了吗?我想过滤workers。
编辑: 我的模特:
class TicketCounter(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_counter_name = models.CharField(max_length=100, default="")
ticket_counter_description = models.CharField(max_length=1500, default="")
ticket_counter_address = models.CharField(max_length=1500, default="")
class WorkerToTicketCounter(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ticket_counter = models.ForeignKey(TicketCounter,related_name="workers")
worker = models.ForeignKey(User,related_name='worker_for_ticket_counter')
我的序列化器:
class TicketCounterSerializer(serializers.ModelSerializer):
num_workers = serializers.IntegerField()
class Meta:
model = TicketCounter
fields = (
'ticket_counter_name',
'ticket_counter_description',
'ticket_counter_address',
'num_workers',
)
【问题讨论】:
-
请添加您的模型以更清晰。
标签: django django-models django-rest-framework