Django: ManyToManyField filtern

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
schorsch
User
Beiträge: 18
Registriert: Montag 26. November 2007, 18:39

Montag 25. Februar 2008, 23:02

Hallo alle zusammen,
ich spiele schon ne weile mit Python herum und möchte jetzt auch von PHP auf Django umsteigen. Um warm zu werden hab ich mir was kleines überlegt un bin schon gleich auf ein Problem gestoßen.

ich reduziers mal aus das Wesentliche:
ich habe Einträge die Kategorien angehören sollen, also:

Code: Alles auswählen

class Entry(models.Model):
    tags = models.ManyToManyField(Tag) # Tag ist das model für die Kategorien
    ...
und möchte jetzt alle Einträge filtern die zu allen angegebenen Kategorien gehören.

Hier mal was ich bisher versucht hab:

Code: Alles auswählen

>>> Entry.objects.filter(tags__in=[tag1, tag2])
# gibt alle einträge zurück, auch wenn nur eine der beiden kategorien vorhanden ist
>>> Entry.objects.filter(tags=tag1).filter(tags=tag2)
# gibt leere liste zurück
>>> Entry.objects.filter(Q(tags=tag1) & Q(tags=tag2))
# ebenfalls leere liste
Wenn es möglich ist würde ich das gerne über die Django-API machen da meine anderen Ideen dazu in einem Entry.objects.all() enden würden, was ich nicht so toll finde.
Ich hoffe ihr könnt mir da weiter helfen, benutze übrigens die Entwicklerversion mit Python 2.5 und SQLite als Datenbank.
Danke schonmal im vorraus.
Antworten