2012-03-26 14 views
0

Ich habe ein Blog-Modell mit m2m-Beziehung mit einem Tag-Objekt. Ich möchte, dass jeder Blog mehrere Sätze von Tags hat, sagen wir [tagset1, tagset2 ......]. Wenn Benutzer einige Gruppen von Tags [usertagset1, usertagset2 .....] zum Abrufen von Blogs senden, muss ich alle Blogs mit usertagset als Teilmenge des Tagsets des Blogs zurückgeben.Weitere Gruppenobjekte in einer Viele-zu-Viele-Beziehung

Ich bin mir nicht sicher über den besten Weg, um es mit mindestens nicht zu gehen. von SQL-Abfragen. Soll ich ein neues Modell erstellen, das die Info der Blogsets enthält und dann das Blogmodell eine m2m-Beziehung mit diesem neuen Modell haben?

Antwort

0

Sie können versuchen, Tags, um herauszufiltern eins nach dem anderen:

user_tags = [tag1, tag2, ... tagn] 
blogs = Blogs.objects.all() 
for tag in user_tags: 
    blogs = blogs.filter(tags=tag) # assuming 'tags' is your M2M field name 

Jeder Filter() wird die Suche, bis nur Blogs mit alle angegebenen Tags verengen verbleiben. Da Djangos QuerySets träge sind und kombiniert werden können, führt dies zu einer einzigen SQL-Abfrage.