Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
Python /register/'中的Django数据错误;整数超出范围';_Python_Django - Fatal编程技术网

Python /register/'中的Django数据错误;整数超出范围';

Python /register/'中的Django数据错误;整数超出范围';,python,django,Python,Django,我试图用django创建一个自定义注册系统,但当我提交注册表单时,在/register/处出现一个数据错误,“整数超出范围”。有什么问题吗 Django说错误来自这个文件“forms.py” 附则;我在使用postgres数据库 我的代码: from django import forms from django.conf import settings from .models import recordBuddyUser from django.views.generic import Cr

我试图用django创建一个自定义注册系统,但当我提交注册表单时,在/register/处出现一个数据错误,“整数超出范围”。有什么问题吗

Django说错误来自这个文件“forms.py”

附则;我在使用postgres数据库

我的代码:

from django import forms
from django.conf import settings
from .models import recordBuddyUser
from django.views.generic import CreateView
from django.core.exceptions import ValidationError
# from django.contrib.auth.forms import UserCreationForm


class RegisterForm(forms.ModelForm):
    companyname = forms.CharField(widget=forms.TextInput(
        attrs={
            'type': 'text',
            'name': 'company-nam',
            'placeholder': 'company Name',
            'id': 'exampleInputcompanyName',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companyadministrator = forms.CharField(widget=forms.TextInput(
        attrs={
            'type': 'text',
            'name': 'administrator',
            'id': 'exampleAdminName',
            'placeholder': 'company Admin',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companyphone = forms.IntegerField(widget=forms.NumberInput(
        attrs={
            'maxlenght': '15',
            'type': 'number',
            'name': 'companyphonenumber',
            'placeholder': 'company Phone',
            'id': 'examplecompanyPhoneNumber',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companyemail = forms.CharField(widget=forms.EmailInput(
        attrs={
            'type': 'email',
            'name': 'company-email',
            'id': 'exampleInputEmail',
            'placeholder': 'Email Address',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companypassword = forms.CharField(widget=forms.PasswordInput(
        attrs={
            'type': 'password',
            'name': 'password',
            'placeholder': 'Password',
            'id': 'exampleInputPassword',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companypasswordconfirm = forms.CharField(widget=forms.PasswordInput(
        attrs={
            'type': 'password',
            'name': 'confirm-password',
            'id': 'exampleRepeatPassword',
            'placeholder': 'Repeat Password',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    class Meta:
        model = recordBuddyUser
        fields = ('companyname', 'companyemail', 'companyphone',
                  'companyadministrator', 'companypassword', 'companypasswordconfirm')

    def clean_username(self):
        username = self.cleaned_data['companyname'].lower()
        recordBuddy_user = recordBuddyUser.objects.filter(companyname=username)
        if recordBuddy_user.count():
            raise ValidationError(f"This company name '{username}' already exists !!")
        return username

    def clean_adminname(self):
        adminname = self.cleaned_data['companyadministrator'].lower()
        recordBuddy_user = recordBuddyUser.objects.filter(
            companyadministrator=adminname)
        if recordBuddy_user.count():
            raise ValidationError(f"This Admin name '{adminname}' already exists !!")
        return adminname

    def clean_email(self):
        email = self.cleaned_data['companyemail'].lower()
        recordBuddy_user = recordBuddyUser.objects.filter(companyemail=email)
        if recordBuddy_user.count():
            raise ValidationError(f"This company email '{email}' already exists !!")
        return email

    def clean_phonenumber(self):
        phonenumber = self.cleaned_data['companyphone']
        recordBuddy_user = recordBuddyUser.objects.filter(
            companyphonenumber=phonenumber)
        if recordBuddy_user.count():
            raise ValidationError(f"This company phone number '{phonenumber}' already exists!!")
        return phonenumber

    def clean_password(self):
        password1 = self.cleaned_data.get('password')
        password2 = self.cleaned_data.get('confirm-password')

        if password1 and password2 and password1 != password2:
            raise ValidationError("Your passwords don't match.")
        return password2

    def save(self, commit=True):
        user = recordBuddyUser.objects.create_user(
            self.cleaned_data['companyname'],
            self.cleaned_data['companyemail'],
            self.cleaned_data['companyadministrator'],
            self.cleaned_data['companyphone'],
            self.cleaned_data['companypassword'],
        )
        print ('New user saved')
        return user


class LoginForm(forms.ModelForm):
    companyemail = forms.CharField(widget=forms.EmailInput(
        attrs={
            'type': 'email',
            'name': 'company-email',
            'id': 'exampleInputEmail',
            'aria-describedby': 'emailHelp',
            'placeholder': 'Enter Email Address...',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    companypassword = forms.CharField(widget=forms.PasswordInput(
        attrs={
            'type': 'password',
            'name': 'password',
            'placeholder': 'Password',
            'id': 'exampleInputPassword',
            'class': 'form-control rounded-pill btn-user p-4 form-control-user'
        }
    )
    )
    remember_me = forms.BooleanField(required=False, widget=forms.CheckboxInput(
        attrs={

            'type': 'checkbox',
            'id': 'customCheck',
            'name': 'remember-me',
            'class': 'custom-control-input'
        }
    )
    )
    class Meta:
        model = recordBuddyUser
        fields = ('companyemail', 'companypassword')

    def clean_email(self):
        email = self.cleaned_data['companyemail'].lower()
        recordBuddy_user = recordBuddyUser.objects.filter(companyemail=email)
        if recordBuddy_user.count():
            raise ValidationError(f"This company email '{email}' already exists !!")
        return email

    def clean_username(self):
        username = self.cleaned_data['companyname'].lower()
        recordBuddy_user = recordBuddyUser.objects.filter(companyname=username)
        if recordBuddy_user.count():
            raise ValidationError(f"This company name '{username}' already exists !!")
        return username

    def clean_password(self):
        password1 = self.cleaned_data['password']
        password2 = self.cleaned_data['confirm-password']

        if password1 and password2 and password1 != password2:
            raise ValidationError("Your passwords don't match.")
        return password2

    def remember_me(self):
        remember_me = self.cleaned_data['remember_me']
        # remember_me = True

        if remember_me:

            # 2 weeks
            self.request.session.set_expiry(1209600)
            settings.SESSION_EXPIRE_AT_BROWSER_CLOSE = False
            return True

        else:
            return False
django回溯将这部分代码突出显示为错误代码,我真的不知道该怎么做

回溯代码:

/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in _execute
                return self.cursor.execute(sql, params) …
▶ Local vars
The above exception (integer out of range ) was the direct cause of the following exception:
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/core/handlers/exception.py in inner
            response = get_response(request) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response
                response = self.process_exception_by_middleware(e, request) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
/home/thefixer/django_stuff/record_Buddy/record_Buddy_Network/views.py in register_view
            regform.save() …
▶ Local vars
/home/thefixer/django_stuff/record_Buddy/record_Buddy_Network/forms.py in save
            self.cleaned_data['companypassword'], …
▶ Local vars
/home/thefixer/django_stuff/record_Buddy/record_Buddy_Network/models.py in create_user
        user.save(using=self._db) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/contrib/auth/base_user.py in save
        super().save(*args, **kwargs) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/base.py in save
                       force_update=force_update, update_fields=update_fields) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/base.py in save_base
                force_update, using, update_fields, …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/base.py in _save_table
            results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/base.py in _do_insert
            using=using, raw=raw, …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/manager.py in manager_method
                return getattr(self.get_queryset(), name)(*args, **kwargs) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/query.py in _insert
        return query.get_compiler(using=using).execute_sql(returning_fields) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/models/sql/compiler.py in execute_sql
                cursor.execute(sql, params) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in execute
            return super().execute(sql, params) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in execute
        return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in _execute_with_wrappers
        return executor(sql, params, many, context) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in _execute
                return self.cursor.execute(sql, params) …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/utils.py in __exit__
                raise dj_exc_value.with_traceback(traceback) from exc_value …
▶ Local vars
/home/thefixer/django_stuff/django_job/lib/python3.6/site-packages/django/db/backends/utils.py in _execute
                return self.cursor.execute(sql, params) …
▶ Local vars
regform.save()仅来自my views.py,但其他两个来自上面的代码段

下面是我的自定义用户模型,我将其重命名为recordBuddyUser,我想在数据库中指定我自己的字段,尽管现在我想到了,我可能已经考虑过了。此外,我还将admin用户字段与常规字段放在同一个模型(recordBuddyUser)中,我希望这样可以

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import (
    PermissionsMixin,
    AbstractBaseUser,
    BaseUserManager,
)


# Custom models to override django default User and handle all User intercations

class User_manager(BaseUserManager):

    def create_user(self, companyname, companyemail, companyadministrator, companyphonenumber, companypassword):
        companyemail = self.normalize_email(companyemail)

        user = self.model(companyname=companyname, companyemail=companyemail,
                          companyadministrator=companyadministrator, companyphonenumber=companyphonenumber,
                          companypassword=companypassword,
                          )

        user.set_password(companypassword)
        user.save(using=self._db)
        return user

    def create_superuser(self, admin_username, admin_email, admin_gender, admin_password, admin_position):
        user = self.create_user(admin_username=admin_username, admin_email=admin_email,
                                admin_gender=admin_gender, admin_position=admin_position, admin_password=admin_password
                                )

        # user.set_password(admin_password)
        user.is_superuser = True
        user.is_staff = True
        user.save(using=self._db)
        return user


class recordBuddyUser(PermissionsMixin, AbstractBaseUser):
    ''' This model handles the details of users on Aqua Buddy '''
    companyname = models.CharField(max_length=200, unique=True)
    companyemail = models.EmailField(max_length=200, default=None)
    companyphonenumber = models.IntegerField()
    companypassword = models.CharField(max_length=2083, default=None)
    companyadministrator = models.CharField(max_length=200)
    # companylogo = models.CharField(max_length=2083, null=True)
    dateregistered = models.DateTimeField(default=timezone.now)
    # companyletterhead = models.CharField(max_length=2083, null=True)

    # recordBuddy Admin fields

    dateregistered = models.DateTimeField(default=timezone.now)
    admin_email = models.EmailField(max_length=200, default=None, unique=True)
    admin_position = models.CharField(max_length=200, blank=True)
    admin_username = models.CharField(max_length=200, blank=True)
    admin_password = models.CharField(
        max_length=2083, default=None, blank=True)

    gender_choices = [("M", "Male"), ("F", "Female"), ("O", "Others")]
    admin_gender = models.CharField(choices=gender_choices,
                                    default="M", max_length=1, blank=True)

    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    REQUIRED_FIELDS = ["admin_username", "admin_email", "admin_position"]
    USERNAME_FIELD = "companyname"
    objects = User_manager()

    def __str__(self):
        return self.companyname

我不知道丢失了什么,但计算机当然没有错。

罪魁祸首似乎是
companyphonenumber
字段中的值,因为它被声明为
整数字段。你可能传递了一个完整的国际号码,比如541112345678


您需要将该字段更改为另一种类型,可能最好是类似的
CharField

这不是完整的回溯。说明错误的行丢失。在没有完整回溯的情况下,我不确定此问题的答案是什么,但我注意到您在companyphone下有一个打字错误
“maxlenght”:“15”
。可能会导致错误。谢谢@Cm0295,我甚至没有看到。我还添加了问题的完整回溯。您确定调用
recordBuddyUser.objects.create\u user()
中的参数与预期参数匹配吗?您应该将模型的代码添加到问题中谢谢您的回复@ivissani,为了更清晰,我已将我的自定义模型添加到问题中。