【发布时间】:2018-08-18 13:34:24
【问题描述】:
我有一个可以在 django 中有多个标签的对象(一篇博文)。我正在尝试使用这些相同标签中的一个或多个获取相关对象。
例如:您的博文带有一些标签,例如“食物”、“饮料”和“餐厅”。当您打开此博文时,会显示一些“相关”博文(意味着它们共享一个或多个标签)。此类相关博文的示例将具有以下标签:“苏打水”、“柠檬水”和“饮料”。
这是我的看法:
instance = get_object_or_404(Blog, id=id)
tags = instance.tags.values()
related = []
for x in tags: #to put all the tags in an array
related.append(x['name'])
for a in Blog.objects.raw('SELECT * FROM "blog_table" WHERE related in "blog_table"."tags"'):
print (a.name) #this should display the name of all the related blogposts (probably including itself)
这是我的模型:
class Tag(models.Model):
name = models.CharField(max_length=500)
number = models.IntegerField(null=True, blank=True)
def __str__(self):
return str(self.number) + ' ' + self.name
class Blog(models.Model):
name = models.CharField(null=False, max_length=500, verbose_name='title of blogpost', unique=True)
body = models.TextField(null=False, verbose_name='body of the blogpost')
tags = models.ManyToManyField(Tag, blank=True, null=True)
def __str__(self):
return self.name
【问题讨论】: