J'ai une requête qui ressemble à ceciUne requête plus stricte donne plus de résultats?
affiliates = User.objects.annotate(referral_count=Count('referrals'))
.filter(referral_count__gt=0)
Mais quand je limiterai plus en ajoutant referrals__user__date_joined__gt=start_date
au filtre, je reçois même nombre de référence plus élevés. J'essaie de compter le nombre de personnes qu'un utilisateur a référé au cours d'une période de temps.
Le modèle pertinent ressemble à ceci:
class Profile(models.Model):
user = models.ForeignKey(User, unique=True, related_name='profile')
referred_by = models.ForeignKey(User, null=True, blank=True,
related_name='referrals')
En revanche, quand je l'essayer comme ceci:
affiliates = User.objects \
.exclude(referrals__user__date_joined__lte=sd, \
referrals__user__date_joined__gt=ed) \
.annotate(referral_count=Count('referrals')) \
.filter(referral_count__gt=0)
La déclaration exclude
semble ne rien faire ... Les chiffres ne le font pas change (devrait être 0 si aucun utilisateur référé ne s'est joint durant cette période, mais ce n'est pas le cas).
'Users' n'a pas de champ' referenced_by'; C'est sur l'objet 'Profile'. Le 'related_name' (' referrals') est ce qui apparaît sur l'objet 'User', c'est pourquoi je dois l'utiliser. – mpen
Oui, mais avez-vous seulement essayé? – sebpiq