Модель 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)```