我正在使用django-taggit进行标记。我有同一个对象的 django-tastypie REST 资源。
在公开 REST 资源时,它不会获取标签字段(例如,等效于 model.tags.all())。
有什么特别需要做的吗?
我想对对象模型执行 GET 和 POST 操作并检索和插入标签。
有人可以指出示例设置以返回标签对象吗?我在这里提到了要点,但是无法理解在查询模型时如何检索关联的标签。
谢谢你的帮助。
我正在使用django-taggit进行标记。我有同一个对象的 django-tastypie REST 资源。
在公开 REST 资源时,它不会获取标签字段(例如,等效于 model.tags.all())。
有什么特别需要做的吗?
我想对对象模型执行 GET 和 POST 操作并检索和插入标签。
有人可以指出示例设置以返回标签对象吗?我在这里提到了要点,但是无法理解在查询模型时如何检索关联的标签。
谢谢你的帮助。
首先制作一个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,
)