ci-dessous requête obtenir toutes les questions qui ne réponses liées:
Question.objects.annotate(answer_count=Count('answer')).filter(answer_count=0)
Mise à jour:
Vous pouvez agir par tous les paramètres annotate
comme les champs réels du modèle dans la méthode de filtrage, par exemple toutes les questions qui ont plus que trois réponses:
Question.objects.annotate(answer_count=Count('answer')).filter(answer_count__gt=3)
REMARQUE:
Comment fonctionne la méthode d'annotation?
À l'arrière de toutes les transactions ORM relationnelles gérer par langage SQL, et SQL préfèrent certaines fonctions supplémentaires qui ont fait plus de flexibilité dans de nombreuses actions, spécifiquement dans l'instruction SELECT
, par exemple nous avons besoin de moyenne ou nombre de colonnes dans plusieurs rangées, voir ci-dessous:
SELECT count(*) from my_table;
si la fonction supérieure count
pas préféré, il faut chercher tous les dossiers d'abord, et dans une autre longueur de calcul étape des résultats, cette méthode est difficile et ont de nombreux avantages.
Django ORM préférait des fonctions SQL utilisables égales qui ne doivent être utilisées qu'en annotation et traduction vers SQL avant exécution.
More info aboute annotate method
Voulez-vous un filtre de questions spécifique? –
@Shaonshaonty Non, je veux juste toutes les questions sans réponse! –
mention table ... –