J'essaie d'obtenir une requête d'un modèle spécifique. J'ai du mal à le faire pour filtrer correctement les données.Filtrage de plusieurs modèles dans les vues django
J'ai déjà corrigé un bogue où il renvoyait d'autres données d'utilisateurs mais maintenant il renvoyait des doublons d'une ligne de données dans le modèle.
events = Event.objects.filter(club=user.get_profile().main_club) | Event.objects.filter(invclub=user.get_profile().main_club) | Event.objects.filter(invited=user)
C'est la requête que j'essaie d'exécuter.
Le résultat que je visais, est d'avoir tous les événements que l'utilisateur a été soit manuellement invités à (invité) leur club a été invité (invclub) ou leur club est le club hôte (club)
Je suis probablement en train d'aborder ce problème dans la mauvaise direction et il se peut très bien que ce soit une façon plus simple de le faire. Toute aide est grandement appréciée.
EDIT: comms.models
class Event(models.Model):
title = models.CharField(max_length='255')
club = models.ForeignKey(Club, verbose_name="Host Club")
invclub = models.ManyToManyField(Club, verbose_name="Invited Clubs", related_name="Invited Clubs", blank=True)
l_desc = models.CharField(max_length='255', verbose_name="Location Description")
l_long = models.CharField(max_length='255', verbose_name="Longitude", blank=True)
l_lat = models.CharField(max_length='255', verbose_name="Latitude", blank=True)
edate = models.DateTimeField(default=datetime.now, verbose_name="Event Date", blank=True)
length = models.CharField(max_length='255', verbose_name="Event Length", blank=True)
invited = models.ManyToManyField(User, related_name="Invited Users", blank=True)
attending = models.ManyToManyField(User, related_name="Attending Users", blank=True)
declined = models.ManyToManyField(User, related_name="Declined Users", blank=True)
description = models.TextField(blank=True)
fixe:
solution finale utilise le Q() Objets comme suggéré ci-dessous, tout en ajoutant la fonction .distinct() pour assurer pas de doublons sont renvoyés .
Pouvez-vous également publier vos modèles? Il est difficile de penser à la requête sans les modèles. –