首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-tastypie with django-taggit

django-tastypie with django-taggit
EN

Stack Overflow用户
提问于 2012-11-27 04:54:26
回答 1查看 701关注 0票数 2

我正在使用django-taggit进行标记。我为同样的对象提供了django-tastypie资源。

在公开REST资源时,它不会获取标记字段(例如,等同于model.tags.all())。

有什么特别需要做的吗?

我想在对象模型上执行GET和POST操作,并检索和插入标记。

有人可以指向示例设置来返回标记对象吗?我已经提到了gist here,但是不能理解在查询模型时如何检索相关的标签。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 08:16:25

首先创建一个TagResource

代码语言:javascript
复制
from taggit.models import Tag

class TagResource(ModelResource):
    class Meta:
        queryset = Tag.objects.all()

然后在获得标签的资源中:

代码语言:javascript
复制
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为例:

代码语言:javascript
复制
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,
        )
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13573004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档