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 для заполнения опций.

Вернуться на верх