Estou consultando o banco de dados para obter uma lista de objetos e usando annotate () para contar quantos itens associados eles têm com ele.
Eu gostaria de retornar apenas objetos com um associado item
contagem acima de 5.
lists = List.objects.exclude(picture_url="").exclude(picture_url__icontains="google").select_related("city","city__country", "user", "user__profile").annotate(items_added=Count("item"))[:10]
Respostas:
4 para resposta № 1lists = List.objects.exclude(picture_url="")
.exclude(picture_url__icontains="google")
.select_related("city","city__country", "user", "user__profile")
.annotate(items_added=Count("item"))
.filter(items_added__gt=5)[:10]
Diferente de agregate (), annotate () não é um terminalcláusula. A saída de a cláusula annotate () é um QuerySet; este QuerySet pode ser modificado usando qualquer outra operação QuerySet, incluindo filter (), order_by ou até chamadas adicionais para anotar ().