2012-11-26 3 views
2

태그 지정에 django-taggit을 사용하고 있습니다. 나는 같은 객체에 대해 django-tastypie REST 리소스를 가지고있다.django-taggit의 django-tastypie

REST 리소스를 노출하는 동안 태그 필드를 가져 오지 않습니다 (예 : model.tags.all()과 동일).

특별 조치가 필요합니까?

개체 모델에서 GET 및 POST 작업을 수행하고 태그를 검색 및 삽입하려고합니다.

태그 객체를 반환하려면 샘플 설정을 참조하십시오. 나는 요점 here을 언급했지만, 모델을 쿼리 할 때 관련 태그를 검색하는 방법을 이해할 수는 없습니다.

도움 주셔서 감사합니다.

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

그것은 작동합니다

답변

4

첫 번째는 TagResource합니다.

UPDATE 태그를 필터링하기 위해

, 당신이 당신의 API를 이름 v1입니다 가정 TagResource를 통해 필터링이 URL은 : 홈페이지 위

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

은입니다 like : 'anytagyouwant이 있습니까?'

/api/v1/foo/?tags__slug=anytagyouwant&format=json

주, 특정 필드를 필터링 할 수 있도록 'anytagyouwant 태그가 모든 foo를 얻을'에 대한

, 당신은 예를 들어 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, 
     ) 
+0

감사합니다. 태그에 필터를 적용하려면 어떻게해야합니까? 그리고 또한 태그를 반환 개체, 개체를 Foo 등 없습니다 : {ALL, \t \t이 \t \t \t '슬러그'} 필터링 = - – Mutant

+0

나는 당신이 TagResource에 필터링을 추가해야합니다 첫 번째 URL에 대한 답 –

+0

업데이트. 'anytagyouwant'태그로 매핑 된 모든 Foo 객체를 얻을 수있는 곳을 찾고 있습니다. – Mutant