2012-04-04 2 views
1

J'ai cette configuration dans mes modèles:relations de requête ManyToMany sans nom à travers le champ

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) 

Compte tenu de l'auteur, je veux savoir quels sont les sujets qu'il a écrit sur:

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

Si je devais J'ai spécifié un champ à travers, je pourrais l'utiliser, mais maintenant Django fait le champ à travers pour moi, et comme il est supposé être transparent, Id préfère ne pas référencer le champ (à moins qu'il y ait une construction Django appropriée).

Répondre

1

Utilisation Lookups that span relationships:

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

Remarque: vous devez utiliser différent ici, car le même sujet peut être sélectionné par les différents articles.

+0

Merci! J'aurais dû pouvoir le trouver moi-même, mais apparemment je l'ai manqué. Je vais vérifier maintenant. – dyve

+0

Comme un charme. Merci. – dyve

Questions connexes