2010-03-01 5 views
1

Comment filtrer des objets avec un "author" à partir d'un ensemble de "author s" (User s)? Les "objets" sont Post s, ayant un author (ForeignKey à User). Je suis assez perplexe par ceci, donc j'apprécierais l'aide avec lui. Bien sûr, on pourrait procéder de cette manière naïve, en les filtrant manuellement, mais cela rendrait la base de données très difficile. Merci quand même.Django - Comment filtrer les objets avec un "auteur" d'un ensemble d '"auteurs" (utilisateurs)?

EDIT: Liste des post:

class Post(models.Model): 
    '''A Post or a Status Update. 
    ''' 
    content=models.CharField(max_length=200) 
    author=models.ForeignKey(django.contrib.auth.models.User, related_name="author") 
    tags=models.ManyToManyField(Tag) 
    replyTo=models.ManyToManyField(django.contrib.auth.models.User, related_name="replyTo") 
    # Snip model methods 

Précision: Je suis en train de filtrer sur la base d'un ensemble d'utilisateurs et non un seul utilisateur (qui est trivialement facile à faire) quand = models.DateTimeField (auto_now = True)

Merci à tous ceux qui ont répondu à la question précédente. Maintenant, j'ai une dernière chose à demander:

extrait de code de UserProfile (connecté à l'utilisateur):

def get_updates(): 
    return Post.objects.filter(author__in=(list(self.friends.all()) + [self])) 

Est-ce la façon la plus efficace pour obtenir tous les messages d'un auteur et ses amis ? (Note: Ceci est une mise en œuvre naïve, car il ne gère pas la pagination, etc. Fera plus tard)

+0

Je ne suis pas sûr de ce que vous demandez ici. Voulez-vous filtrer tous les objets 'Post' d'un' Author' donné ?? Ou voulez-vous trouver un «auteur» spécifique dans une liste de tous les «Auteurs»? –

+0

@rishabh: Je pense que je viens de clarifier que ... – aviraldg

+0

Pour la dernière partie de votre question, cela semble être une bonne façon de le gérer – Zach

Répondre

4

Quelque chose comme:

Post.objects.filter(author=user) 

user est l'utilisateur concerné devrait fonctionner, mais il est difficile de donner une bonne réponse sans modèles

EDIT

maintenant que je comprends votre question, essayez ceci:

Post.objects.filter(author__in=users) 

Lorsque les utilisateurs est l'ensemble des utilisateurs

+0

@Zach: J'ai ajouté plus de détails ... pouvez-vous aider maintenant? – aviraldg

+0

Juste mis à jour ma réponse – Zach

+0

Merci ... Une dernière chose (lire la question ci-dessus) – aviraldg

3
Post.objects.filter(author__in=setofusers) 
+0

Merci ... Une dernière chose (lire la question ci-dessus) – aviraldg

Questions connexes