python - /user/register 处的 ValueError 无法分配“('土木工程(CE)',)”:“User.department”必须是“Department”实例
问题描述
我无法将数据插入数据库。我想创建一个具有特定部门名称和部门表的用户,并使用外键来检测来自某个部门的用户。
这是我的模型文件:
class Department(models.Model):
name = models.CharField(max_length=100, blank=False, null=False)
admin_id = models.ForeignKey('Admin' , on_delete=models.CASCADE)
admin_post_id = models.ForeignKey('Admin_Post' , on_delete=models.CASCADE)
def __str__(self):
return name
这是我的自定义用户模型:
class User(AbstractBaseUser):
first_name = models.CharField(max_length=50, blank=False, null=False)
last_name = models.CharField(max_length=50, blank=False, null=False)
address = models.CharField(max_length=150)
phone_number = models.IntegerField( blank=False, null=False, unique=True)
department = models.ForeignKey('Department' , on_delete=models.CASCADE)
semester = models.FloatField(blank=False, null=False)
registation = models.IntegerField(blank=False, null=False, unique=True)
email = models.EmailField(max_length=150, blank=False, null=False, unique=True)
password = models.CharField(max_length=150, blank=False)
password_con = models.CharField(max_length=150, blank=False, null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELD = ['email']
objects = UserManager()
def _str__(self):
return registration;
这是我的视图文件:
def register(request):
if request.method == 'POST':
first_name = request.POST['first_name']
last_name = request.POST['last_name']
address = request.POST['address']
phone_number = request.POST['phone_number']
department = request.POST['department']
semester = request.POST['semester']
registration = request.POST['registration']
email = request.POST['email']
password = request.POST['password']
password_con = request.POST['password_con']
user = Department()
user = User.objects.create_user(first_name=first_name ,last_name=last_name ,address=address ,phone_number=phone_number ,department=department ,semester=semester ,registration=registration ,email=email ,password=password)
if User.objects.filter(email=email).exists():
messages.info(request,'Email is Already taken')
elif User.objects.filter(registration=registration):
messages.info(request,'Registration Id is Already taken')
elif password != password_con:
messages.info(request,'Credentials not mathcing')
else:
# user.department = Department.objects.get()
user.save()
print('user created')
return redirect('signin/')
else:
return render(request,'register.html')
解决方案
你的线
department = request.POST['department']
应该是这样的:
department = Department.objects.get(id=request.POST['department'])
推荐阅读
- php - PHP 电子邮件清理过滤器
- node.js - Docker 中的 NodeJS 看不到连接
- c# - 是否有任何属性可以选择 ListView 项目设计时间
- css - 如何在css中用一种颜色绘制半对角线,用另一种颜色绘制另一半对角线
- r - 如何保持数据文件中相关图标签的顺序相同?
- lua - Lua中的快速序列化/反序列化表(无递归)
- d3.js - 存储多个 (~10000) SVG 填充模式
- jsp - 在第 39 行处理 JSP 页面 /index.jsp 时发生异常
- swift - 在 Metal 着色器中写入 0-Alpha 无法正确渲染
- java - 无法在 Raspberry Pi 3(Raspbian)上运行我的 JavaFX jar 文件