2

タグ付けにdjango-taggitを使用しています。同じオブジェクトのdjango-tastypieRESTリソースがあります。

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

動作するはずです。

アップデート

タグをフィルタリングするには、 TagResourceAPI名が、であると仮定して、タグをフィルタリングする必要があります。URLv1は次のとおりです。

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

上記のURLは次のようなものです:'anytagyouwant存在しますか?'

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 に答える