【发布时间】:2021-10-25 10:39:26
【问题描述】:
我有一个对象模型,并且为该模型的对象分配了几个标签。标签可以是大写、小写或两种情况的混合。
我想编写一个查询集,它将返回那些具有我提供的相同标签的对象。
注意:我正在使用 django-taggit 模块。
视图.py
def home(request):
book = Book.objects.filter(tags__name__in= map(lambda s:s.lower(), ['harry-potter', 'Champak', 'Physics']))
print(book)
return HttpResponse("Books Retrieved")
模型.py
from django.db import models
from django.utils.translation import ugettext_lazy as _
from taggit.managers import TaggableManager
from taggit.models import GenericUUIDTaggedItemBase, TaggedItemBase
class UUIDTaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase):
class Meta:
verbose_name = _("Tag")
verbose_name_plural = _("Tags")
class Book(models.Model):
name = models.CharField(max_length=100)
details = models.TextField(blank=True)
tags = TaggableManager(through=UUIDTaggedItem, blank = True)
现在我想退回所有标签为“哈利波特”、“哈利波特”或任何其他词的书籍。
PS:如果我们可以降低 'tags__name__in' 列表,我们的工作就完成了。
【问题讨论】:
标签: python django django-models django-rest-framework django-taggit