2013-07-09 37 views
0

這是有效的,但是有沒有更好的Django習慣用法?作者的發佈者列表

my_books = Book.objects.filter(author__name=='me') 
my_publishers = Publisher.objects.filter(pk__in=[b.publisher.id for b in my_books]) 

models = round_up_the_usual_suspects() 

class Publisher(models.Model): 
    name = models.CharField(max_length=30) 


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


class Book(models.Model): 
    title = models.CharField(max_length=100) 
    author = models.ForeignKey(Author, related_name='books_authored') 
    publisher = models.ForeignKey(Publisher, related_name='books_published') 
+0

創作通常你會與你想結束了關係,開始了書中所有的出版商。所以@karthikrs的建議是最有意義的。 –

回答

1

你可以做

my_publishers = Publisher.objects.filter(book__author__name='me') 

這給你通過me

+0

這麼簡單,但(在我的情況下)不直觀。謝謝 –