UpdateView в django
Я могу обновлять email и другие поля с помощью общего вида редактирования "UpdateView", задавая имя атрибута в моих html-вводах соответствующим именем поля, так что name="email" и так далее. Но то же самое не работает с полем "user_permissions"
модель = Пользователь поля = [
"email",
"is_superuser",
"is_active",
"is_staff",
"user_permissions",
]
// опции добавляются с помощью обработчика событий js
Поле
Вернуться на верх
user_permissions является отношением "многие-ко-многим". Вы должны правильно его обработать. Лучше создать пользовательскую форму, которая будет поддерживать это:
user_permissions = forms.ModelMultipleChoiceField(
queryset=Permission.objects.all(),
widget=forms.CheckboxSelectMultiple,
)
Затем используйте его в своем представлении:
class UserUpdateView(UpdateView):
model = User
form_class = forms.YourCustomForm
def get_form(self, form_class=None):
if form_class is None:
form_class = self.get_form_class()
return form_class(**self.get_form_kwargs())
Затем во front-end используйте базовый "{{ form.as_p }}", чтобы увидеть, как html отображается по умолчанию. Это поможет вам, если позже, если вы захотите, вы сможете использовать JS для заполнения опций.