2

嘿 StackOverFlowers :) 我一直在开发一个博客图片应用程序。我一直在到处寻找有关如何为 Django 实现主题标签功能的解决方案,以便用户可以为图片创建主题标签并排序/检索基于图片的主题标签。

我在 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

从这里开始,任何人都可以为我指出如何实现标签的正确方向吗?抱歉,如果我不够清楚,请发表评论并让我知道,以便我可以为您和其他人更清楚地提出我的问题!谢谢!

4

1 回答 1

7

使用 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库看起来只是在将“散列”添加到“标记”之前利用了“酷”因素,但看起来并不是很好。

它似乎确实提供了一些不错的功能(例如基于标签的列表视图),但这是您可以通过几行轻松实现的功能。ListView

于 2012-11-14T23:08:17.287 回答