2016-11-08 9 views
0

Вот модель:Джанго tastypie относительная QuerySet

class Project(models.Model): 
    creator = models.ForeignKey(User) 
    name = models.CharField(max_length=64) 

    def __unicode__ (self): 
     return self.name 

Теперь я хочу, чтобы получить проекты пользователей от REST/tastypie. Я сделал класс ресурсов на учебных пособиях, как это:

class ProjectResource(ModelResource): 
    class Meta: 
     queryset = Project.objects.all() 
     resource_name = 'project' 

Но этот код возвращающегося всех данных для каждого пользователя.

Я знаю, как добавить аутентификацию, но я не могу понять, как вернуть не все проекты, а некоторые подмножества этих данных на основе зарегистрированного идентификатора пользователя.

ответ

1

Вы можете переопределить get_object_list

class ProjectResource(ModelResource): 
    class Meta: 
     queryset = Project.objects.all() 
     resource_name = 'project' 

    def get_object_list(self, request): 
     qs = super().get_object_list(request) 
     return qs.filter(creator=request.user) 

    def authorized_read_list(self, object_list, bundle): 
     return object_list.filter(creator=bundle.request.user.id) 
+0

О, спасибо! Для сохранения времени в будущем есть функция authorized_read_list ... – KaronatoR

+0

@KaronatoR Если у вас есть более подходящий ответ, просто отредактируйте мой, и я согласен с вашими улучшениями –