Динамический выбор для ChoiceFilter в зависимости от зарегистрированных пользователей - PullRequest
0 голосов
/ 08 октября 2019

Я настраиваю программу для игры в боулинг и хочу, чтобы пользователи выбирали свой собственный выбор, включенный только в их группу пользователей.

Но у меня возникает проблема, когда я пытаюсь передать параметр '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'
...