Ich habe diese zwei Klassen für ein Messaging-Modul, an dem ich arbeite. Die Idee ist, dass eine Konversation von einer Gruppe von Teilnehmern (zwei oder mehr) repräsentiert wird. Ich bemühe mich, eine Möglichkeit zu finden, eine Konversation durch die Logik zu suchen, die besagt, dass die gewünschte Konversation, die ich zu finden versuche, folgende Teilnehmer hat. Ich versuchte Conversation.objects.filter(participants__in=[p1, p2])
jedoch tut dies eine OR-Stil-Abfrage, p1 ist ein Teilnehmer oder p2 ist ein Teilnehmer. Ich will p1 und p2 und ... pN ist ein Teilnehmer. Irgendeine Hilfe da draußen?Django M2M QuerySet-Filterung für mehrere Fremdschlüssel
class Conversation(models.Model):
date_started = models.DateTimeField(auto_now_add=True)
participants = models.ManyToManyField(User)
def get_messages(self):
return Message.objects.filter(conversation=self)
def new_message(self, sender, body):
Message.objects.create(sender=sender, body=body, conversation=self)
self.save()
class Message(models.Model):
sender = models.ForeignKey(User)
body = models.TextField()
date = models.DateTimeField(auto_now_add=True)
conversation = models.ForeignKey(Conversation)
def __unicodde__(self):
return body + "-" + sender
Aktuelle beste Antwort, fehlt didaktische Einführung zu verketteten Filtern auf derselben M2M-Relation: -) – vincent
Ich mag das, es scheint wie der richtige Weg, es nicht eine gehackte Lösung zu tun. Vielen Dank! – Mike