Search code examples
pythondjangopython-3.xdjango-import-export

How to get request in ModelResource django-import-export


How to get request.user from method queryset of ModelResource in django-import-export?

class PeopleResource(ModelResource):
    class Meta:
       model = People
       exclude = ('id','agent', 'public_id', 'active')

    def dehydrate_placeA(self, people):
        ...
        ...

    def get_queryset(self):
        query = People.objects.filter( ..... request.user )
        return query

Solution

  • Problem solved. I forget that I have called people_resource.export() in my views before. Now it easier because I just pass variabel kwargs in method export() and override def export() in model PeopleResource. So my solution is here.

    views.py

    def export_excel(request):    
        ...
        people_resource = PeopleResource()
        dataset = people_resource.export(agent=request.user.agent,)
        ...
    

    models.py

    class PeopleResource(ModelResource):
        class Meta:
            model = People
            exclude = ('id','agent', 'public_id', 'active')
        ...
        ...
    
        def export(self, queryset=None, *args, **kwargs):
            queryset = People.objects.filter(agent=kwargs['agent'])
            return super(PeopleResource, self).export(queryset, *args, **kwargs)