2014-09-10 4 views
1

Это мой пользовательский класс ресурсовпользователи Фильтр по группе пользователей в tastypie

class UserResource(ModelResource): 
    class Meta: 
     queryset = User.objects.all() 
     allowed_methods = ['get', 'post', 'put', 'patch'] 
     resource_name = 'user' 
     excludes = ['password'] 
     #authentication = SessionAuthentication() 
     #authorization = DjangoAuthorization() 
     authorization = Authorization() 
     authentication = Authentication() 
     always_return_data = True 
     filtering = { 
      'id': ALL, 
      'username': ALL, 
      'groups': ALL_WITH_RELATIONS 
     } 

Я хочу, чтобы отфильтровать пользователей по их именам групп. Нравится/api/v1/user /? Format = json & groups__name = group_name

Вышеуказанный формат не работает. Как я могу отфильтровать его в запросе get?

ответ

2

Вы должны добавить реляционные поля из модели, которые вы собираетесь использовать для своего ресурса. На первом месте вам нужно создать ресурс модели для модели группы. Затем создайте поле «Много» в UserResource, связанном с GroupResource.

Что-то вроде этого:

class GroupResource(ModelResource): 
    class Meta: 
     queryset = Group.objects.all() 
     resource_name = 'group' 
     authorization = Authorization() 
     authentication = Authentication() 
     always_return_data = True 
     filtering = { 
      'id': ALL, 
      'name': ALL, 
     } 


class UserResource(ModelResource): 
    groups = fields.ToManyField(GroupResource, 'groups', 
           blank=True) 
    class Meta: 
     queryset = User.objects.all() 
     allowed_methods = ['get', 'post', 'put', 'patch'] 
     resource_name = 'user' 
     excludes = ['password'] 
     #authentication = SessionAuthentication() 
     #authorization = DjangoAuthorization() 
     authorization = Authorization() 
     authentication = Authentication() 
     always_return_data = True 
     filtering = { 
      'id': ALL, 
      'username': ALL, 
      'groups': ALL_WITH_RELATIONS 
     } 

Причиной этого является Tastypie должен знать реляционную разрешение объекта, аутентификацию, resource_name и отдыха кучу настроек, которые не могут населяют себя.

Смежные вопросы