Я настраиваю программу для игры в боулинг и хочу, чтобы пользователи выбирали свой собственный выбор, включенный только в их группу пользователей.
Но у меня возникает проблема, когда я пытаюсь передать параметр 'request' в функцию, используя'django_filters.ChoiceFilter'.
views.py
c_filter = TodayScoreFilter(request.GET, request=request, queryset=Score.objects.all)
filters.py
def date_choice(request):
if request is None:
return Score.objects.none()
for group in request.user.groups.filter(Q(name='mon') | Q(name='wed')):
group = group
qs = Score.objects.filter(group=group).order_by('-date')
date_list=[]
for q in qs:
date_list.append(q.date)
a = np.array(date_list)
_, idx = np.unique(a, return_index=True)
b = tuple(a[np.sort(idx)])
c = tuple((m,m) for m in b)
return c
class TodayScoreFilter(django_filters.FilterSet):
date = django_filters.ChoiceFilter(choices=date_choice)
class Meta:
model = Score
fields = ['date']
def __init__(self, data=None, *args, **kwargs):
if data is not None:
choice = date_choice(kwargs['request'])
data = data.copy()
if len(data) == 0:
data['date'] = choice[0][0]
super(TodayScoreFilter, self).__init__(data, *args, **kwargs)
Я ожидал, что пользователь сможет выбрать только дату, в которую он вовлечен. Носообщение об ошибке выглядит следующим образом:
TypeError: date_choice() missing 1 required positional argument: 'request'