【发布时间】:2020-12-12 22:30:03
【问题描述】:
我想对用户进行自定义验证,以创建名称中带有空格的名称用户。我这样做如下,但是,我创建了 User2 并更改了正则表达式,但它没有更改验证条件,它不起作用。有没有人知道为什么或如何而不是我能做到?
型号
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import User
from django.contrib.auth.validators import UnicodeUsernameValidator
class MyUnicodeUsernameValidator(UnicodeUsernameValidator):
print('test My')
regex = r'^[\d]'
message = _(
'Enter a valid username. This value may contain only letters, '
'numbers, and @/./+/-/_ characters.'
)
flags = 0
class User2(User):
username_validator = MyUnicodeUsernameValidator()
print(username_validator)
查看
from django.shortcuts import render, get_object_or_404
from .models import User2
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import logout
from blog.models import Article
class MyUserCreationForm(UserCreationForm):
class Meta:
model = User2
fields = ("username",)
def sign_up(request):
context = {}
form = MyUserCreationForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
form.save()
return render(request, 'accounts/index.html')
context['form'] = form
return render(request,'registration/sign_up.html', context)
【问题讨论】:
-
您创建了一个新的验证器,并将其作为类属性附加,但这不会更改现有字段的验证...
-
此外,因为
User不是抽象模型,您现在有两个表:一个表只有一个ForeignKey从User2到User和User模型。跨度>
标签: django validation django-models customization