python - 如何将自定义用户模型添加到管理面板的用户部分 - django 3.1.1
问题描述
我在我的 django 项目中添加了一个自定义用户模型,这里对此进行了解释。
我这样定义了额外的字段models.py
:
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
company = models.CharField(max_length=25, blank=True)
address = models.TextField(max_length=500, blank=True)
zipcode = models.CharField(max_length=15, blank=True)
city = models.CharField(max_length=25, blank=True)
country = models.CharField(max_length=25, blank=True)
phone = models.CharField(max_length=15)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
在我views.py
的,注册是这样的:
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
def update_profile(request, user_id, company, address, zipcode, city, country, phonenumber):
user = User.objects.get(pk=user_id)
user.profile.company = company
user.profile.address = address
user.profile.zipcode = zipcode
user.profile.city = city
user.profile.country = country
user.profile.phoneNumber = phonenumber
user.save()
def register(request):
if request.method == 'POST':
# Get form values
first_name = request.POST['firstname']
last_name = request.POST['lastname']
company = request.POST['company']
address = request.POST['address']
zipcode = request.POST['zipcode']
city = request.POST['city']
country = request.POST['country']
phoneNumber = request.POST['phoneNumber']
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
password2 = request.POST['password2']
# Check if password match
if password == password2:
# Check username
if User.objects.filter(username=username).exists():
return redirect('register')
else:
if User.objects.filter(email=email).exists():
return redirect('register')
else:
# looks good
user = User.objects.create_user(username=username,
password=password,
email=email,
first_name=first_name,
last_name=last_name)
user.save()
update_profile(request, user.id, company, address, zipcode, city, country, phoneNumber)
return redirect('login')
else:
return redirect('register')
else:
return render(request, 'users/register.html')
现在,在管理面板中,应将自定义模型添加到单独的部分中,如下所示:
from django.contrib import admin
from .models import Profile
admin.site.register(Profile)
如何在部分users
下的页面中添加自定义用户模型(即配置文件)的字段AUTHENTICATION AND AUTHORIZATION
?
解决方案
推荐阅读
- android - Picasso 无法解析方法“With(android.content.Context)”
- rest - 使用 (ADO rest api) 在 Azure Repos 中列出特定提交的标签
- matlab - MATLAB中数值数据的拉普拉斯变换
- python - 如何表达和强制一个类有两种操作模式,每一种都有一些有效和无效的方法
- stata - regexr 和 regexm 的错误
- python - 如何在 django Detailview 中使用多个表单
- c++ - 是否有可能/希望创建不可复制的共享指针模拟(以启用 weak_ptr 跟踪/借用类型语义)?
- json - 在 azure CosmosDb 中查询嵌套的 JSON 属性
- python - Pandas-ValueError:Usecols 与列不匹配,列预期但未找到错误代码
- c# - 验证码 .net core 2.1 的电子邮件发件人问题