<p>您可以设置自定义方法。更多信息请点击此处:<a href="https://django-filter.readthedocs.io/en/master/guide/usage.html#customize-filtering-with-filter-method" rel="nofollow noreferrer">https://django-filter.readthedocs.io/en/master/guide/usage.html#customize-filtering-with-filter-method</a></p>
<pre><code>class RequestsFilter(django_filters.FilterSet):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop('user')
super().__init__(*args, **kwargs)
employee = django_filters.filters.ModelMultipleChoiceFilter(
field_name='employee',
queryset=Employee.objects.all(),
method="filter_employee",
)
start_date = DateFilter(field_name='date_time', lookup_expr='gt', widget=forms.TextInput(attrs={'type': 'date'}))
end_date = DateFilter(field_name='date_time', lookup_expr='lt', widget=forms.TextInput(attrs={'type': 'date'}))
class Meta:
model = LeaveRequest
fields = ['employee', 'type']
def filter_employee(self, queryset, name, value):
qs = queryset.filter(user=self.user).filter(**{name: value})
if len(qs) >= 1:
return qs[0]
else:
return None
</code></pre>