- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
你好,我需要你的帮助:)
我在学校参与这个 Django 元素。我用 AbstractBaseUser 类替换了 auth_user 表,并创建了一个名为 UserLogin 的新类。所以创建一个 super 用户工作正常,但创建用户注册页面不工作
我现在花了大约 10 个小时来解决这个错误。希望你能帮助我谢谢你
如果你需要更多信息,请写下来
这是整个错误信息
TypeError: Field 'id' expected a number but got ((), {'email': 'admin@adminator.ch', 'first_name': 'ksfd', 'last_name': 'dfsg', 'location': 'Bern', 'date_of_birth': datetime.datetime(2020, 9, 29, 0, 0, tzinfo=<UTC>), 'plz': 4589, 'license_plate_number': 80291, 'license_plate_char': 'BE', 'country': 'CH', 'address': 'adminstrasse', 'phone_number': '0453268', 'raw_password': 'Balmistar45!', 'is_staff': False, 'is_superuser': False}).
[08/Oct/2020 09:03:08] "POST /accounts/signup HTTP/1.1" 500 176373
这是我的模型:
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
from django.db import models
from django.contrib.auth.models import PermissionsMixin
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
class UserAccountManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, email, password, **extra_fields):
"""
Create and save a user with the given email, and password.
"""
if not email:
raise ValueError('The given email must be set')
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(email, password, **extra_fields)
def create_superuser(self, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(email, password, **extra_fields)
def get_by_natural_key(self, email):
return self.get(**{self.model.USERNAME_FIELD: email})
country_choices = [
("CH", "CH"),
("DE", "DE"),
("FR", "FR"),
("BE", "BE"),
]
class UserLogin(AbstractBaseUser, PermissionsMixin):
"""
replaces auth_user table
examples for the fields:
location : Bern, Biel
license_plate_char : BE, NE, SG
"""
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
phone_number = models.CharField(max_length=15, null=False)
plz = models.IntegerField(null=True)
location = models.CharField(max_length=30)
address = models.CharField(max_length=30)
country = models.CharField(max_length=2, choices=country_choices)
license_plate_char = models.CharField(max_length=6)
license_plate_number = models.IntegerField(null=True)
email = models.EmailField(_('email address'), unique=True)
date_of_birth = models.DateTimeField(null=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(default=timezone.now)
last_login = models.DateTimeField(null=True)
is_superuser = models.BooleanField(default=False)
objects = UserAccountManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
def __str__(self):
return self.email
views.py
from django.contrib.auth import login
from django.shortcuts import render, redirect
from parking_mgmt.forms import UserForm
from django.contrib import auth
from parking_mgmt.models import UserLogin
def home(request):
return render(request, 'home.html')
"""Login"""
def login_view(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect('home')
return render(request, 'registration/login.html')
def sign_up(request):
form = UserForm(request.POST or None)
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
user = UserLogin.objects.create_user(
first_name=form.cleaned_data['first_name'],
last_name=form.cleaned_data['last_name'],
location=form.cleaned_data['location'],
date_of_birth=form.cleaned_data['date_of_birth'],
plz=form.cleaned_data['plz'],
license_plate_number=form.cleaned_data['license_plate_number'],
license_plate_char=form.cleaned_data['license_plate_char'],
country=form.cleaned_data['country'],
address=form.cleaned_data['address'],
phone_number=form.cleaned_data['phone_number'],
email=form.cleaned_data['email'],
raw_password=form.cleaned_data['password1'],
)
user.save()
login(request, user)
return redirect('home')
else:
form = UserForm()
return render(request, 'registration/signup.html', {'form': form})
def logout(request):
auth.logout(request)
return render(request, 'registration/logout.html')
Forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from .models import UserLogin, ParkingLot, Reservation, Price
class UserForm(UserCreationForm):
class Meta:
model = UserLogin
fields = ("email", "first_name", "last_name", "location", "password1", "date_of_birth",
"plz", "license_plate_number", "license_plate_char", "country", "address", "phone_number")
这是回溯。
System check identified no issues (0 silenced).
October 08, 2020 - 09:02:23
Django version 3.1.2, using settings 'djangoProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[08/Oct/2020 09:02:25] "GET /accounts/signup HTTP/1.1" 200 8372
[08/Oct/2020 09:02:25] "GET /static/css/bootstrap.min.css HTTP/1.1" 200 160308
[08/Oct/2020 09:02:25] "GET /static/js/bootstrap.min.js HTTP/1.1" 200 60050
Not Found: /favicon.ico
[08/Oct/2020 09:02:25] "GET /favicon.ico HTTP/1.1" 404 1827
Internal Server Error: /accounts/signup
Traceback (most recent call last):
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1774, in get_prep_value
return int(value)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'tuple'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\core\handlers\base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\djangoProject\views.py", line 32, in sign_up
user = UserLogin.objects.create_user(
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\parking_mgmt\models.py", line 26, in create_user
return self._create_user(email, password, **extra_fields)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\parking_mgmt\models.py", line 20, in _create_user
user.save(using=self._db)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\contrib\auth\base_user.py", line 71, in save
super().save(*args, **kwargs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\base.py", line 753, in save
self.save_base(using=using, force_insert=force_insert,
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\base.py", line 790, in save_base
updated = self._save_table(
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\base.py", line 872, in _save_table
updated = self._do_update(base_qs, using, pk_val, values, update_fields,
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\base.py", line 906, in _do_update
filtered = base_qs.filter(pk=pk_val)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\query.py", line 942, in filter
return self._filter_or_exclude(False, *args, **kwargs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\query.py", line 962, in _filter_or_exclude
clone._filter_or_exclude_inplace(negate, *args, **kwargs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\query.py", line 969, in _filter_or_exclude_inplace
self._query.add_q(Q(*args, **kwargs))
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\sql\query.py", line 1358, in add_q
clause, _ = self._add_q(q_object, self.used_aliases)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\sql\query.py", line 1377, in _add_q
child_clause, needed_inner = self.build_filter(
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\sql\query.py", line 1319, in build_filter
condition = self.build_lookup(lookups, col, value)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\sql\query.py", line 1165, in build_lookup
lookup = lookup_class(lhs, rhs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\lookups.py", line 24, in __init__
self.rhs = self.get_prep_lookup()
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\lookups.py", line 76, in get_prep_lookup
return self.lhs.output_field.get_prep_value(self.rhs)
File "G:\BIS19\ÜK307 - HTML, CSS - Interaktive Webseite erstellen\Django Projekt\mod-307-bis19p\venv\lib\site-packages\django\db\models\fields\__init__.py", line 1776, in get_prep_value
raise e.__class__(
TypeError: Field 'id' expected a number but got ((), {'email': 'admin@adminator.ch', 'first_name': 'ksfd', 'last_name': 'dfsg', 'location': 'Bern', 'date_of_birth': datetime.datetime(2020, 9, 29, 0, 0, tzinfo=<UTC>), 'plz': 4589, 'license_plate_number': 80291, 'license_plate_char': 'BE', 'country': 'CH', 'address': 'adminstrasse', 'phone_number': '0453268', 'raw_password': 'Balmistar45!', 'is_staff': False, 'is_superuser': False}).
[08/Oct/2020 09:03:08] "POST /accounts/signup HTTP/1.1" 500 176373
Process finished with exit code 0
最佳答案
所以我只想写下问题的解决方案。或者只是对我有帮助的事情。
正如@Charles 所说,这只是一个迁移错误,我的元素也有问题。当我的 friend 克隆 repo 并试用它时,代码完美运行。
所以我刚刚删除了计算机上的元素。创建了一个新元素并将其从我的 GitHub 存储库中合并下来,它成功了。
所以我希望我能在这方面帮助别人。
关于python - 类型错误 : Field 'id' expected a number but got ((),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64259041/
出现在 python 2.7.8 中。 3.4.1 不会发生这种情况。 示例: >>> id(id) 140117478913736 >>> id(id) 140117478913736 >>> id
好吧,我对动态创建的控件的 ID 很困惑。 Public Class TestClass Inherits Panel Implements INamingContainer
我收到下面的错误,说有堆栈溢出。发生这种情况是因为带有 IN (id, id, id...id) 的 SQL 语句有大量参数。有没有什么办法解决这一问题?这是在我使用 Eclipse 的本地环境中发生
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
为什么 CPython(对其他 Python 实现一无所知)有以下行为? tuple1 = () tuple2 = ()
非常简单的问题:当我有一个持久对象时,它通常有一个名为 ID 的属性(对于抽象类)。 那么..命名约定是ID还是Id? 例如。 public int ID { get; set; } 或 public
知道为什么我会收到此错误,我已经尝试了所有命名约定(小写/大写) 我正在使用 Vaadin,这是我的代码片段: public class Usercontainer extends BeanI
为什么 CPython(不知道其他 Python 实现)有以下行为? tuple1 = () tuple2 = ()
我需要改变表的所有主键 UPDATE TODO SET id = id + 1 但我做不到(Demo 来自 Ahmad Al-Mutawa 的回答)描述了原因。主键不能这样改。 我也不能根据这是 sq
我正在尝试列出与用户相关的讨论列表。 想象一下,如果你愿意的话: posts -------------------------------------------------------------
我有一个表,其中包含一些具有自己的 ID 和共享 SKU key 的文章。我尝试使用左连接进行查询,并使用组结果获取从查询返回的所有 id。 我的数据结构是这样的: id - name -
在下表People中: id name 1 James 2 Yun 3 Ethan 如果我想找到最大 ID,我可以运行此查询 select max(id) id from People; 结果是
我正在产品页面上创建评论模块,其中显示垃圾评论选项,并显示 onclick 显示和隐藏弹出窗口。现在它在单个评论中工作正常但是当评论是两个时它同时打开两个因为类是相同的。现在这就是为什么我想要获取父
根据 REST 哲学,PUT操作应该(取自维基百科): PUT http://example.com/resources/142 Update the address member of the co
我想知道如何在使用 PHP 或 JavaScript 进行身份验证后从 Google Analytics 获取 Property Id、View Id 和 Account Id?因为我希望能够将它们存
我想使用所选按钮的 ID 进行删除。但我不知道如何从中获取/获取 id。我尝试了 this.id 但不起作用。 这是我创建按钮的地方: var deleteEmployer= document.cre
我有一个具有以下结构的表“表” ID LinkedWith 12 13 13 12 14 13 15 14 16
请不要在未阅读问题的情况下将问题标记为重复。我确实发布了一个类似的问题,但 STACKOVERFLOW 社区成员要求我单独重新发布修改后的问题,因为考虑到一个小而微妙的修改,解决方案要复杂得多。 假设
在 Android Studio 中,我创建了一个 Person.java 类。我使用Generate 创建了getter 和setter 以及构造函数。 这是我的 Person.java 类: pu
如何在 jQuery 中制作这样的东西: //这是显示的主体 ID //当我悬停 #hover-id 时,我希望 #principal-id 消失并更改 。但是当我将光标放在 #this-id 上时
我是一名优秀的程序员,十分优秀!