Django - проходные параметры для встроенного формы

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

У меня есть следующее в файле представлений:

AttendanceFormset = inlineformset_factory(
    Session,
    Attendance,
    formset=BaseAttendanceFormSet,
    exclude=('user'),
    extra=1,
    max_num=10,
    )

session = Session(user=request.user)
formset = AttendanceFormset(request.POST, instance=session)

и, как мне нужно было переопределить одну из полей формы, я добавил следующее в базовый класс Formset:

class BaseAttendanceFormSet(BaseFormSet):

    def add_fields(self, form, index):
        super(BaseAttendanceFormSet, self).add_fields(form, index)
        form.fields['client'] = forms.ModelChoiceField(
                queryset=Client.objects.filter(user=2))

Теперь форма работает правильно, но я Необходимо пройти значение в форме, чтобы я мог фильтровать, клиенты отображаются на основе текущего пользователя, а не просто используя ID 2.

Может кто-нибудь помочь?

Любой совет оценил.

Спасибо.

Отредактируйте

Для любого читания, это то, что работало для меня:

def get_field_qs(field, **kwargs):
        if field.name == 'client':
            return forms.ModelChoiceField(queryset=Client.objects.filter(user=request.user))
        return field.formfield(**kwargs)
5
задан Dan 6 September 2011 в 20:32
поделиться