2011-10-06 37 views
1

我有以下模型,並且我想選擇IndexedLibrary對象,具體取決於book名稱和的tag名稱。Django搜索包含標籤的模型的查詢

如何構建此查詢?下面的查詢中不進行包括圖書標籤,但我想加入他們的行列也

IndexLibrary.objects.filter(book__name__icontains=KEYWORD) 


class IndexedLibrary(models.Model): 
    name = models.CharField(max_length=1000) 
    book = models.ForeignKey(Book,null=False,blank=False)  

    def __unicode__(self): 
     return self.name 

class Book(models.Model): 
    name = models.CharField(max_length=1000) 

    def __unicode__(self): 
     return self.name 

class BookTag(models.Model): 
    name = models.CharField(max_length=1000) 
    book = models.ForeignKey(Book,null=False,blank=False)  
    def __unicode__(self): 
     return self.name 

回答

5

我想補充tagsManyToManyField(Tag, blank=True),從BookTag刪除book屬性,然後查詢像

IndexLibrary.objects.filter(book__name__icontains=KEYWORD, \ 
    tags__name__in=['Tage Name 1', 'Tag Name 2']) 

特別是因爲標籤通常在多個對象之間共享。