Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过ModelForm中的Django用户模型覆盖用户名的maxlength/minlength_Django_Django Forms_Modelform - Fatal编程技术网

通过ModelForm中的Django用户模型覆盖用户名的maxlength/minlength

通过ModelForm中的Django用户模型覆盖用户名的maxlength/minlength,django,django-forms,modelform,Django,Django Forms,Modelform,尝试用以下代码覆盖用户模型,但不知何故,我无法覆盖用户名的最大长度和最小长度 更具体地说,当我通过python manage.py shell检查时,我会覆盖它们。但它似乎对呈现的html没有影响(username maxlength仍然是150) 不知道哪部分出错,请帮忙 from django import forms from django.contrib.auth.models import User class RegistrationForm(forms.ModelForm):

尝试用以下代码覆盖用户模型,但不知何故,我无法覆盖用户名的最大长度和最小长度

更具体地说,当我通过python manage.py shell检查时,我会覆盖它们。但它似乎对呈现的html没有影响(username maxlength仍然是150)

不知道哪部分出错,请帮忙

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

class RegistrationForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
    super(RegistrationForm, self).__init__(*args, **kwargs)
    email = self.fields['email']
    username = self.fields['username']
    email.required = True
    email.label_suffix = ' '
    username.label_suffix = ' '
    ######### this is not work!!!###############
    username.min_length = 6
    username.max_length = 30
    ############################################

class Meta:
    model = User
    fields = ('username', 'email')
    labels = {
        'username': '帳號',
    }
    help_texts = {
        'username': '',
    }

您应该修改/覆盖模型,而不是修改表单


我建议使用来构建您自己的自定义用户模型。它提供了易于扩展的基本模型、视图和表单。

您应该修改/覆盖模型,而不是修改表单


我建议使用来构建您自己的自定义用户模型。它提供了可以轻松扩展的基本模型、视图和表单。

如果您试图只覆盖模型表单字段,您可以这样做

class RegistrationForm(forms.ModelForm):
    username = forms.CharField(required=True, min_length=6, max_length=30)

class Meta:
        model = User
        fields = ('username', 'email')


但我建议创建一个从AbstractBaseUser继承的自定义用户模型,以覆盖用户名或电子邮件字段,如

中所述。如果您试图仅覆盖模型表单字段,可以执行以下操作

class RegistrationForm(forms.ModelForm):
    username = forms.CharField(required=True, min_length=6, max_length=30)

class Meta:
        model = User
        fields = ('username', 'email')


但我建议创建一个从AbstractBaseUser继承的自定义用户模型,以覆盖

中记录的用户名或电子邮件字段。是的,尝试在表单中覆盖该字段似乎不太清楚,这可能会导致与模型兼容的问题。不过,谢谢兄弟,我会检查如何自定义用户模型。是的,尝试在表单中覆盖字段似乎不太清楚,这可能会导致与模型兼容的问题。不过,谢谢兄弟,我会检查如何定制用户模型。