Django - Passando parâmetros para o formset inline
Estou usandoinlineformset_factory
para criar campos para um relacionamento muitos para muitos entre Clientes e Sessões, com um modelo de Atendimento intermediári
Tenho o seguinte no meu arquivo de visualizações:
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)
E, como eu precisava substituir um dos campos do formulário, adicionei o seguinte à classe base do 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))
Agora, o formulário funciona corretamente, mas preciso passar um valor para o formset para que eu possa filtrar os clientes exibidos com base no usuário atual, em vez de usar apenas o ID 2.
lguém pode ajuda
Qualquer conselho apreciado.
Obrigado
EDITA
Para quem lê, é isso que funcionou para mim:
def get_field_qs(field, **kwargs):
if field.name == 'client':
return forms.ModelChoiceField(queryset=Client.objects.filter(user=request.user))
return field.formfield(**kwargs)