15 Stimmen

django Queryset für viele-zu-viele Felder

Ich habe die folgenden Django 1.2 Modelle:

class Category(models.Model):
    name = models.CharField(max_length=255)

class Article(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

class Preference(models.Model):
    title = models.CharField(max_length=10, unique=True)
    categories = models.ManyToManyField(Category)

Wie kann ich eine Abfrage durchführen, die mir alle Artikelobjekte liefert, die mit denselben Kategorien verbunden sind, mit denen ein bestimmtes Einstellungsobjekt verknüpft ist?

Wenn ich z.B. ein Präferenzobjekt habe, das sich auf die Kategorien "Fische", "Katzen" und "Hunde" bezieht, möchte ich eine Liste aller Artikel, die mit einer der Kategorien "Fische", "Katzen" oder "Hunde" verbunden sind.

18voto

Manoj Govindan Punkte 68109

Versuchen Sie es:

preference = Preference.objects.get(**conditions)
Article.objects.filter(categories__in = preference.categories.all())

2voto

Dave Aaron Smith Punkte 4447
Article.objects.filter(categories__in=myPreferenceObject.categories.all())

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