Уже долгое время мучаюсь с вопросом, нагуглить не удалось. Я делаю добавление пользователя в группы при создании, решил использовать мультиселект. Все работает как я и хотел, но при редактировании пользователя хотел вывести в форму значения уже присвоенных ему групп в поле select, но при передаче в form.base_fields['groups'].initial значения QuerySet из групп пользователя, они добавляются в параметры инициализации, но не отображаются на странице.
Выглядит форма и представление следующим образом:
class EditSotrForm(forms.ModelForm):
class Meta:
model = Sotr
fields = [
'firstName',
'lastName',
'middleName',
'idDolj',
'description'
]
widgets = {
'idDolj': forms.Select(attrs={
'class': 'form-control'
}),
}
groups = forms.ModelChoiceField(queryset=Group.objects.all(), widget=forms.SelectMultiple(attrs={
'class': 'select2bs4 select2-hidden-accessible form-control',
'multiple': '',
'tabindex': '-1',
'aria-hidden': 'true'
}))
login = forms.CharField()
password = forms.CharField()
confirmPassword = forms.CharField()
def __init__(self, *args, **kwargs):
super(EditSotrForm, self).__init__(*args, **kwargs)
self.fields['firstName'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['lastName'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['middleName'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['login'].widget = forms.TextInput(attrs={'class': 'form-control'})
self.fields['password'].widget = forms.PasswordInput(attrs={'class': 'form-control'})
self.fields['confirmPassword'].widget = forms.PasswordInput(attrs={'class': 'form-control'})
# self.fields['idDolj'].widget = forms.Select(attrs={'class': 'form-control'})
self.fields['description'].widget = forms.Textarea(attrs={'class': 'form-control'})
self.fields['idDolj'].required = False
self.fields['groups'].required = False
self.fields['description'].required = False
self.fields['firstName'].required = False
self.fields['lastName'].required = False
self.fields['middleName'].required = False
self.fields['login'].required = False
self.fields['password'].required = False
self.fields['confirmPassword'].required = False
@login_required
def EditSotrView(request, objId):
if request.method == 'GET':
form = EditSotrForm(instance=Sotr.objects.get(id=objId))
form.base_fields['groups'].initial = Sotr.objects.get(id=objId).user.groups.constrained_target
return render(request, 'edit_sotr.html', {
'form': form,
'objId': objId
})
Возможно я делаю что-то не правильно, подскажите, кто уже сталкивался с такой проблемой?