2012-04-04 7 views
1

Ich habe dieses Setup in meiner Modelle:Abfrage ManyToMany Beziehungen ohne durch Feld mit dem Namen ein

class Author(models.Model): 
    name = models.CharField(max_length=100) 

class Topic(models.Model): 
    name = models.CharField(max_length=100) 

class Article(models.Model): 
    name = models.CharField(max_length=100) 
    authors = models.ManyToManyField(Author, null=True, blank=True) 
    topics = models.ManyToManyField(Topic, null=True, blank=True) 

Autor gegeben, möchte ich wissen, welche Themen er schrieb:

def author_info(request, pk): 
    author = get_object_or_404(Author, pk=pk) 
    topics = ???? 

Wenn ich Ich habe ein Durchgangsfeld angegeben, das ich verwenden könnte, aber jetzt macht Django das Durchgangsfeld für mich, und da es transparent sein soll, referenziere ich das Feld lieber nicht (es sei denn, es gibt eine richtige Django-Konstruktion dafür).

Antwort

1

Verwendung Lookups that span relationships:

topics = Topic.objects.filter(article__authors=author).distinct() 

Hinweis: Sie haben hier verschiedene verwenden, da das gleiche Thema kann durch verschiedene Artikel ausgewählt werden.

+0

Danke! Ich hätte es selbst finden können, aber anscheinend habe ich es vermisst. Ich werde es jetzt überprüfen. – dyve

+0

Wie ein Charme. Vielen Dank. – dyve

Verwandte Themen