我一直试图找到问题的答案,但却找不到我需要的答案。
我最近开始搞乱Django(我已经搜索了文档),直到现在一直很好。我制作了一个简单的图库应用,想法很简单,每个图片都有一堆标签。我想构建一个标签列表(没有问题),然后选择一个标签 - 获取所有图像中相关标签的列表 - 我有一个问题,看看我的视图代码:
def getTagList(request):
images = Image.objects.all()
imgsWithTag = images.filter(tags__name__in=["space"]).only('tags')
allTags = imgsWithTag.values_list('tags__name', flat=True)
这是 - 我希望 allTags 成为所有图片代码的列表(包括' space'如示例所示) - 相反,我得到:
[u'space', u'space']
我的数据库中的两张图片。每张图片都包含两个标签('空格'是普通的标签),但只有匹配的标签?据我所知,标签已经退回了。
这里究竟发生了什么?怎么避免呢?有没有更好的方法来做我想做的事情?
我的模型如下:
class Tag(models.Model):
name = models.CharField(max_length=60, primary_key=True)
def __unicode__(self):
return self.name
class Image(models.Model):
title = models.CharField(max_length=60)
image = models.ImageField(upload_to="images/")
tags = models.ManyToManyField(Tag, blank=True)
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
def thumbnail(self):
return '<img src="%s" height="40" />' % (self.image.url)
thumbnail.short_description = 'Image'
thumbnail.allow_tags = True
def get_tags(self):
return ", ".join([x.name for x in self.tags.all()])
def url(self):
return self.image.url
def __unicode__(self):
return self.title
谢谢。