Hey StackOverFlowers :)我一直在研究博客图片应用程序。我一直在寻找有关如何为Django实现hashtagging功能的解决方案,以便用户可以为图片创建主题标签,还可以对基于主题标签的图片进行排序/检索。
我看过GitHub上的django-hastags:https://github.com/semente/django-hashtags但是在阅读完文档之后,我迷失了:(
我有一个用户模型,我有一个博客图片模型。下面我发布了来自models.py的代码,用于我的两个模型:
from django.db import models
from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from bookmarks.handlers import library
class Bloguser(models.Model):
user = models.OneToOneField(User, primary_key=True)
bio = models.CharField(max_length=140, blank=True)
favorites = models.ManyToManyField('BlogPicture', through='Favorites', related_name = 'picture_favs')
likes = models.ManyToManyField('BlogPicture', related_name='likedby', blank=True)
userPic = models.CharField(max_length=128, blank=True)
userCover = models.CharField(max_length=128, blank=True)
phoneNum = models.CharField(max_length=20, blank=True)
def __unicode__(self):
return self.user.username
class BlogPicture(models.Model):
title = models.CharField(max_length=40)
bloguser = models.ForeignKey(Bloguser, related_name = 'shot_owner')
postTime = models.DateTimeField(auto_now_add=True)
description = models.CharField(max_length=100, blank=True)
url = models.CharField(max_length=128)
def json_feat(self):
return{
'title': self.title,
'photo-url': self.url,
}
def __unicode__(self):
return self.title
从这里开始,有人能指出我如何实现hashtagging的正确方向吗?对不起,如果我不够清楚,请发表评论并告诉我,以便我可以让你和其他人更清楚我的问题!谢谢!
答案 0 :(得分:6)
使用django标记库怎么样?例如django-taggit。
从项目文档中无耻地提取:
>>> apple = Food.objects.create(name="apple")
>>> apple.tags.add("red", "green", "delicious")
>>> apple.tags.all()
[<Tag: red>, <Tag: green>, <Tag: delicious>]
>>> apple.tags.remove("green")
>>> apple.tags.all()
[<Tag: red>, <Tag: delicious>]
>>> Food.objects.filter(tags__name__in=["red"])
[<Food: apple>, <Food: cherry>]
说实话,django-hashtags
库似乎只是在将“hash”添加到“tag”之前就采用了“酷”因素,但看起来并不是很好。
它确实提供了一些不错的功能(例如基于标签的列表视图),但这可以轻松通过几行ListView
来实现。