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')