Spec-Zone.ru › Wagtail 2

Пользовательские модели пользователей

Пример пользовательских форм пользователей

Этот пример демонстрирует, как добавить текстовое поле и поле внешнего ключа к пользовательской модели пользователя и настроить формы пользователей Wagtail для разрешения обновления значений полей.

Создайте пользовательскую модель пользователя. Она должна как минимум наследоваться от AbstractBaseUser и PermissionsMixin. В данном случае мы расширяем класс AbstractUser и добавляем два поля. Внешний ключ ссылается на другую модель (не показано).

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    country = models.CharField(verbose_name='country', max_length=255)
    status = models.ForeignKey(MembershipStatus, on_delete=models.SET_NULL, null=True, default=1)

Добавьте приложение, содержащее вашу модель пользователя, в INSTALLED_APPS — оно должно быть расположено выше 'wagtail.users' строки, чтобы переопределить встроенные шаблоны Wagtail — и установите AUTH_USER_MODEL для ссылки на вашу модель. В данном примере приложение называется users, а модель — User

AUTH_USER_MODEL = 'users.User'

Создайте ваши пользовательские формы создания и редактирования пользователей в своем приложении:

from django import forms
from django.utils.translation import gettext_lazy as _

from wagtail.users.forms import UserEditForm, UserCreationForm

from users.models import MembershipStatus


class CustomUserEditForm(UserEditForm):
    country = forms.CharField(required=True, label=_("Country"))
    status = forms.ModelChoiceField(queryset=MembershipStatus.objects, required=True, label=_("Status"))


class CustomUserCreationForm(UserCreationForm):
    country = forms.CharField(required=True, label=_("Country"))
    status = forms.ModelChoiceField(queryset=MembershipStatus.objects, required=True, label=_("Status"))

Расширьте шаблоны Wagtail для создания и редактирования пользователей. Эти расширенные шаблоны должны быть размещены в каталоге шаблонов wagtailusers/users.

Шаблон create.html:

{% extends "wagtailusers/users/create.html" %}

{% block extra_fields %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.country %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.status %}
{% endblock extra_fields %}

Шаблон edit.html:

{% extends "wagtailusers/users/edit.html" %}

{% block extra_fields %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.country %}
    {% include "wagtailadmin/shared/field_as_li.html" with field=form.status %}
{% endblock extra_fields %}

Блок extra_fields позволяет вставлять поля ниже поля last_name в стандартных шаблонах. Существуют и другие варианты переопределения блоков, позволяющие добавлять поля в конец или начало существующих полей, или переопределять все поля.

Добавьте настройки wagtail в свой проект для ссылки на дополнения к форме пользователя:

WAGTAIL_USER_EDIT_FORM = 'users.forms.CustomUserEditForm'
WAGTAIL_USER_CREATION_FORM = 'users.forms.CustomUserCreationForm'
WAGTAIL_USER_CUSTOM_FIELDS = ['country', 'status']
  • Предыдущая Настройка административных шаблонов
  • Следующая Как создавать пользовательские блоки StreamField

Содержание страницы

  • Пользовательские модели пользователей
    • Пример пользовательских форм пользователей

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/advanced_topics/customisation/custom_user_models.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API