我在free-time project,我有这个模型:
class Post(models.Model):
title = models.CharField(max_length=255)
<..>
tags = TagAutocompleteField()
TagAutocompleteField()
与来自django-tagging TagField()
的{{1}}相同,因为CharField
print post.tags
将'one two three'
代替['one', 'two', 'three',]
。
我也有一个观点:
def tagged(request, tag_id):
tag = get_object_or_404(Tag, pk=tag_id)
post_list = Post.objects.all() \
.filter(tags__split__in=tag) \
.filter(is_published=True) \
.order_by('-time_publish')
return render_to_response('plugins/persona/list.html', {
'post_list': post_list,
})
问题在于我无法过滤所有具有特定标记的帖子,因为标记为charField
我尝试使用split()
但过滤器不允许使用。
人们建议使用此功能来获取标签列表:
def get_tags(self):
return Tag.objects.get_for_object(self)
但我也不能在过滤器中使用它。
我应该如何获得具有相同标签的所有帖子?标记的常用方法是按标记获取对象,但如果少数应用程序使用标记,则可能会提供更多帖子。