0

まず、usernameにはmin_lengthを設定するにはどうすればよいですか? ChachaUser._meta.get_field('username').min_length = 2は機能しません。Djangoのユーザー名とパスワードのフィールドをカスタマイズしますか?

placeholderpassword1password2に配置するにはどうすればよいですか? forms.PasswordInput(attrs={'placeholder' : "6자리 이상"}),は機能しません。

これは私のカスタマイズしたUserモデルとUserCreationFormです。それはモデルフィールドではありませんので、あなたがMeta.widgetspassword1を変更することができませんでした2番目の質問については

from django.core import validators  
class ChachaUser(AbstractUser): 
    .................. 
    AbstractUser._meta.get_field('username').validators=[validators.MinLengthValidator(2)] 

:最初の質問については

models.py

from django.core.validators import RegexValidator 
from django.contrib.auth.models import AbstractUser 
from django.db import models 


GENDER_CHOICES = (
    ('M', '남'), 
    ('F', '여'), 
) 

phone_regex = RegexValidator(
    regex=r'^\d{11}$', 
    message=" '-' 없이 입력해주세요", 
) 

username_regex = RegexValidator(
    regex=r'^[0-9a-zA-Z]*$', 
    message='아이디는 영어와 숫자로만 구성되어야 합니다.' 
) 



class ChachaUser(AbstractUser): 

    birth = models.DateField("생년월일") 
    name = models.CharField(
     "이 름", 
     max_length=4 
    ) 
    gender = models.CharField(
     "성 별", 
     max_length=1, 
     choices=GENDER_CHOICES, 
     default='M' 
    ) 

    phone_number = models.CharField(
     "핸드폰", 
     validators=[phone_regex], 
     max_length=11 
    ) 

    job = models.CharField(
     "직 업", 
     max_length=20, 
    ) 

    # python manage.py createsuperuser 할 때 나오는 항목 
    REQUIRED_FIELDS = [ 
     'birth', 
     'name', 
     'gender', 
     'phone_number', 
     'job', 
     'email' 
    ] 

ChachaUser._meta.get_field('username').verbose_name = '아이디' 
ChachaUser._meta.get_field('username').validators = [username_regex] 
ChachaUser._meta.get_field('username').max_length = 20 
ChachaUser._meta.get_field('username').min_length = 2 

forms.py

from django import forms 
from django.contrib.auth.forms import UserCreationForm 
from django.contrib.auth import get_user_model 


class MyUserCreationForm(UserCreationForm): 

    birth = forms.DateField(
     label="생년월일", 
     widget=forms.SelectDateWidget(
      years=range(1970, 2015) 
     ), 
    ) 

    class Meta(UserCreationForm.Meta): 
     model = get_user_model() 
     fields = UserCreationForm.Meta.fields + (
      'name', 
      'gender', 
      'birth', 
      'phone_number', 
      'job', 
     ) 
     exclude = ('email',) 
     widgets = { 
      'username' : forms.TextInput(
       attrs={'placeholder': '알파벳, 숫자만 가능(20자 이내)'} 
      ), 
      'phone_number' : forms.TextInput(
       attrs={'placeholder' : "ex) 01"} 
      ), 
      'job' : forms.TextInput(
       attrs={'placeholder' : "ex) 한국대 철학과, 선생님 등(20자 이내)"} 
      ), 
      'password1' : forms.PasswordInput(
       attrs={'placeholder' : "6자리 이상"} 
      ), 
      'password2' : forms.PasswordInput(
       attrs={'placeholder' : "6자리 이상"} 
      ), 
     } 

答えて

0

。代わりに__init__メソッドでウィジェットを上書きすることができます。

+0

質問。 1. 'ChachaUser'ではなく' AbstractUser'ですか? 2.エラーが発生しました: 'module 'django.db.models'は属性 'validators''を持っていません – user3595632

+0

@ user3595632私は' validators'インポートを修正しました。 'AbstractUser'や' ChachaUser'については、どのような使い方が必要ではないが、私は好きで、通常はユーザモデル内のユーザモデルフィールドを変更するようだ。 –

+0

ありがとう – user3595632

関連する問題