6 Stimmen

Ist es möglich, in Django mit einem logischen ODER zu abfragen?

Ich habe ein Modell 'Organisation', das folgende Felder hat

class Organisation(models.Model):
    members = models.ManyToManyField(User,related_name='org_members')
    title = models.CharField(max_length=200)
    description = models.TextField()
    founder = models.ForeignKey(User,related_name='org_founder')
    def __unicode__(self):
        return self.title

Um eine Abfrage zu erstellen, um alle Organisationen zu erhalten, in denen ein Benutzer Mitglied ist

me=User.objects.get(username='damon')
Organisation.objects.filter(members=me)

Ebenso um eine Abfrage zu erstellen, um alle Organisationen zu erhalten, in denen ein Benutzer der Gründer ist

Organisation.objects.filter(founder=me)

Ich möchte eine Abfrage schreiben, die mir alle Organisationen gibt, in denen ein Benutzer Mitglied ist oder Kurse, für die er der Gründer ist.

Ich habe es wie folgt versucht

Organisation.objects.filter(members=me or founder=me)

Dies verursacht einen Invalid Syntax Fehler

Kann mir jemand sagen, wie ich diese Abfrage erstellen kann

17voto

Aidas Bendoraitis Punkte 3795

Um eine Abfrage mit einem logischen ODER durchzuführen, müssen Sie die Q-Objekte verwenden:

from django.db import models
Organization.objects.filter(models.Q(members=me) | models.Q(founder=me))

4voto

Traian Punkte 2915
from django.db.models import Q
Organization.objects.filter(Q(members='ich') | Q(founder='ich'))

2voto

Mikael Punkte 3118

Verwenden Sie Q-Objekte. Das wird Ihnen bei dem helfen, was Sie suchen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X