Модель Django получает текущего пользователя без запроса

Я пытаюсь получить пользователя внутри модели django_filter, может ли кто-нибудь помочь мне с тем, как это сделать?

import django_filters
from .models import AgentVoucher
from django_filters import DateFilter, ChoiceFilter, DateFromToRangeFilter, widgets, ModelChoiceFilter
from agent.models import Agent
from django import forms
from company.models import Employee

from django_currentuser.middleware import (
    get_current_user, get_current_authenticated_user)




class AgentVoucherFilter(django_filters.FilterSet):


    date = DateFromToRangeFilter(widget=widgets.RangeWidget(attrs={'class':'form-control', 'type':'date','placeholder': 'd/m/Y'}))
    agent = ModelChoiceFilter(
        queryset =Agent.objects.filter(company = "1"), #here I want company = request.user.company 
        widget = forms.Select(attrs={'class': 'form-control select2'})
    
    )
    class Meta:
        model = AgentVoucher
        fields = ['date', "agent" ]

Я пытаюсь использовать company = request.user.company

class AgentVoucherFilter(django_filters.FilterSet):

date = DateFromToRangeFilter(widget=widgets.RangeWidget(attrs={'class':'form-control', 'type':'date','placeholder': 'd/m/Y'}))
agent = ModelChoiceFilter(
    queryset =Agent.objects.filter(company = request.user.company),
    widget = forms.Select(attrs={'class': 'form-control select2'})

)
class Meta:
    model = AgentVoucher
    fields = \['date', "agent" \]

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

class AgentVoucherFilter(django_filters.FilterSet):

    date = DateFromToRangeFilter(widget=widgets.RangeWidget(attrs={'class':'form-control', 'type':'date','placeholder': 'd/m/Y'}))
    agent = django_filters.ModelChoiceFilter(
        field_name='agent', 
        queryset=Agent.objects.all(), 
        widget=forms.Select(attrs={'class': 'form-control select2'}),
        method='filter_agent'
    )
    class Meta:
        model = AgentVoucher
        fields = ['date', "agent" ]
    
    def filter_agent(self, queryset, name, value):
        user = get_current_authenticated_user()
        return queryset.filter(company=user.company)```


Вернуться на верх