обновить поле из модели пользователя по умолчанию django - PullRequest
0 голосов
/ 05 октября 2018

Я создаю приложение, которое хочет, чтобы модель пользователя по умолчанию была расширена.Я хочу настроить некоторые поля, например, добавить некоторые ограничения для имени пользователя.Например, имя пользователя должно содержать от 4 до 16 символов и может содержать только строчные буквы, тире и точки.

Мой вопрос в том, как обновить эти поля в django?Какова лучшая практика, чтобы сделать это.Моя модель ниже.

from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager

class CustomUserManager(UserManager):
    pass

class CustomUser(AbstractUser):
    objects = CustomUserManager()
    followers = models.ManyToManyField("self", related_name="following", symmetrical=False)

1 Ответ

0 голосов
/ 05 октября 2018

Сначала нужно добавить файл forms.py в ваш проект.Затем импортируйте пользовательскую модель в свои forms.py и models.py

from django.contrib.auth.models import User

Как расширить пользовательскую модель по умолчанию, которую вы можете увидеть здесь .

Для проверки символов max и min используйте Forms.py, например:

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User

class SignUpForm(UserCreationForm):
    username = forms.CharField(max_length=16, min_length=4, required=True, error_messages= {"username_exists": "Username already exists."})
    first_name = forms.CharField(max_length=30, required=False)
    last_name = forms.CharField(max_length=30, required=False)
    email = forms.EmailField(max_length=100, required=True, error_messages= {"invalid": "Please, enter correct E-mail"})
    password1 = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(widget=forms.PasswordInput)

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
        widgets = {
        'password': forms.PasswordInput(),
    }

Вы можете вызывать любые сообщения об ошибках в ваших формах, смотрите ссылку выше.

...