我正在使用django-taggit进行标记。我为同样的对象提供了django-tastypie资源。
在公开REST资源时,它不会获取标记字段(例如,等同于model.tags.all())。
有什么特别需要做的吗?
我想在对象模型上执行GET和POST操作,并检索和插入标记。
有人可以指向示例设置来返回标记对象吗?我已经提到了gist here,但是不能理解在查询模型时如何检索相关的标签。
谢谢你的帮助。
发布于 2012-11-27 08:16:25
首先创建一个TagResource:
from taggit.models import Tag
class TagResource(ModelResource):
class Meta:
queryset = Tag.objects.all()然后在获得标签的资源中:
class FooResource(ModelResource):
tags = fields.ToManyField(TagResource, 'tags', # if your tag field is 'tags'
full = True)
class Meta:
queryset = Foo.objects.all()应该能行得通。
更新
为了过滤标签,你必须通过TagResource过滤它,假设你的接口名称是v1,url是:
/api/v1/tag/?slug=anytagyouwant&format=json
上面的url类似于:'is anytagyouwant exist?‘
用于‘获取所有有anytagyouwant标签的foo’
/api/v1/foo/?tags__slug=anytagyouwant&format=json
注意,为了能够过滤某些字段,您必须在资源中声明它,并以FooResource为例:
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
class FooResource(ModelResource):
tags = fields.ToManyField(TagResource, 'tags', # if your tag field is 'tags'
full = True)
class Meta:
queryset = Foo.objects.all()
filtering = dict(
tags = ALL,
# or
tags = ALL_WITH_RELATIONS,
)https://stackoverflow.com/questions/13573004
复制相似问题