2

我正在使用django-taggit进行标记。我有同一个对象的 django-tastypie REST 资源。

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

有什么特别需要做的吗?

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

有人可以指出示例设置以返回标签对象吗?我在这里提到了要点,但是无法理解在查询模型时如何检索关联的标签。

谢谢你的帮助。

4

1 回答 1

4

首先制作一个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,假设您的 api 名称是v1, url 是:

/api/v1/tag/?slug=anytagyouwant&format=json

上面的网址是这样的:“anytagyouwant存在吗?”

for '获取所有有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,
        )
于 2012-11-27T00:16:25.337 回答