brs*_*gic 1 django django-models django-queryset
我有如下模型,我想IndexedLibrary根据其book名称和tag名称选择对象book.
我该如何构建此查询?下面的查询执行时不包括书的标签,但我也想加入他们
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
Run Code Online (Sandbox Code Playgroud)
我会添加tags为ManyToManyField(Tag, blank=True),删除book属性BookTag,然后查询
IndexLibrary.objects.filter(book__name__icontains=KEYWORD, \
tags__name__in=['Tage Name 1', 'Tag Name 2'])
Run Code Online (Sandbox Code Playgroud)
特别是因为标签通常在多个对象之间共享.