django的可扩展键值标记

django-kvtags的Python项目详细描述


django中的可扩展标记。

标记可以与任何django模型关联。您可以根据需要向标记添加任意多个键值对。

标记管理器

使用django kvtags的最佳方法是通过tagmanager。 首先,将标记管理器添加到要添加标记的模型中:

class YourModel(models.Model):
    # your stuff
    objects = models.Manager()
    tags = TagManager()

如果您希望django kvtags在可能的情况下使用cache,请将cache name with cache参数传递给tagmanager:

class YourModel(models.Model):
    # your stuff
    objects = models.Manager()
    tags = TagManager(cache='default')

添加(obj,**kwargs)

将由kwargs匹配的标记添加到obj。

增加千伏(obj,**kwargs)

将其键值由kwargs匹配的标记添加到obj。

移除(obj,**kwargs)

从obj中删除由kwargs匹配的标记。

移走千伏(obj,**kwargs)

从obj中删除其键值与kwargs匹配的标记。

过滤器(obj,**kwargs)

返回绑定到obj并由kwargs匹配的标记的queryset。

获取列表(obj)

返回绑定到obj的标记模型实例的列表

获取ID列表(obj)

返回绑定到obj的标记的id列表

获取摘要列表(self,obj)

返回一个对象列表,其中包含绑定到obj的标记的摘要数据。 如果缓存可用并已设置,则此方法将标记和项标记字典存储在缓存中,以便减少SQL查询。

使用API

django kvtags支持tastypie

标记资源

# urls.py
from kvtags.api import TagResource

tag_resource = TagResource()

urlpatterns = patterns('',
    # The normal jazz here...
    (r'^api/', include(tag_resource.urls)),
)

# urls.py
from tastypie.api import Api
from kvtags.api import TagResource

your_api = Api(api_name='v1')
# Your other resources
your_api.register(TagResource())


urlpatterns = patterns('',
    # The normal jazz here...
    (r'^api/', include(your_api.urls)),
)

标记数据源

taggeditem与您的模型有泛型关系。如果你不需要解决关系, 您可以像包含TagResource一样将TagGedITemResource包含到您的API中。

但是,如果要解析泛型关系,则应基于 TaggeditemResource由您自己购买。然后,像往常一样将新类添加到api中。

示例:

# urls.py
from kvtags.api import TaggedItemResource
from tastypie.contrib.contenttypes.fields import GenericForeignKeyField
from yourapp.models import Spam, Egg
from yourapp.api import SpamResource, EggResource

class MyTaggedItemResource(TaggedItemResource):
    content_object = GenericForeignKeyField({
        Spam: SpamResource,
        Egg: EggResource
    }, 'content_object')

向资源添加标记字段

如果要将与模型关联的标记添加到模型的资源中,可以使用get_list或get_digest_list方法,如下所示:

class YourModelResource(ModelResource):
    # your stuff
    tags = fields.ListField()

    def dehydrate_tags(self, bundle):
        return YourModel.tags.get_digest_list(bundle.obj)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java正则表达式输出不相同   java如何使用JSOUP获取第一个链接?   java实现Spring HATEOAS链接构建   java循环骰子模拟   静态变量上的java异常   felix scr中@Reference和@References注释之间的java差异   java将SpringMVC中的路由映射到不同文件夹路径的简单方法   java通过socket将图像从安卓发送到pc   java在OpenGL中围绕点旋转直线   MyBatis生成器中的java私有同义词   既不使用volatile也不使用局部变量的java双重检查锁定   java按显示自动切换文本视图大小   继承Java SE 7程序员I Oracle认证   在JavaSwing中一行显示Blob数据   Java数独:通用数组创建   java显示包含一个属性的对象数组列表,该属性的值高于某个值   x509certificate如何获取服务器证书链,然后在Java中验证其有效性和受信任性   java与HikariCP的并发性   是否有使用Scala或Java编辑MP4元数据的库?   netbeans Java读取不同类型的图像格式jpg、tif、gif、png