当前位置: 首页 > news >正文

运营型网站外贸seo培训

运营型网站,外贸seo培训,博客网站大全,久久建筑网站内搜索一、问题现象分析 咱们在用Django开发时,有时候需要扩展用户模型,就会去继承AbstractUser。但这么做的时候,要是没处理好groups和user_permissions这两个多对多字段的反向查询名称,就会遇到这样的报错:主要就是这种错误…

一、问题现象分析

咱们在用Django开发时,有时候需要扩展用户模型,就会去继承AbstractUser。但这么做的时候,要是没处理好groups和user_permissions这两个多对多字段的反向查询名称,就会遇到这样的报错:
在这里插入图片描述

主要就是这种错误:

ERRORS:
auth.User.groups: (fields.E304) Reverse accessor clashes...
HINT: Add or change a related_name argument...

说白了,问题出在哪呢?就是Django自带的auth.User模型和咱们自己写的users.User模型,都有同名的多对多字段,结果导致反向查询名称(也就是related_name)打架了。

二、解决方案

1. 显式声明冲突字段
咱们得在自定义用户模型里重新定义一下groups和user_permissions字段,给它们起个独特的名字(也就是设置related_name参数):

# users/models.py
from django.contrib.auth.models import AbstractUser, Group, Permissionclass User(AbstractUser):# 这些是咱们新增的字段,保持不变就行mobile = models.CharField(...)avatar = models.ImageField(...)# 关键修复的地方:重新定义多对多字段groups = models.ManyToManyField(Group,verbose_name='用户组',blank=True,related_name="custom_user_groups",  # 给它起个独特的名字related_query_name="user",)user_permissions = models.ManyToManyField(Permission,verbose_name='用户权限',blank=True,related_name="custom_user_permissions",  # 这个也想起个独特的名字related_query_name="user",)

2. 配置验证
别忘了在settings.py里告诉Django咱们用的是自定义模型:

AUTH_USER_MODEL = 'users.User'  # 这里得对应你的app名和模型名

这一步非常关键,因为它告诉Django整个框架应该使用你的自定义用户模型,而不是默认的auth.User模型,确保认证系统、权限管理和其他依赖用户模型的功能都能正常工作。

3. 执行数据库迁移

最后,执行这两条命令让改动生效:

python manage.py makemigrations
python manage.py migrate

三、原理解读

1. 冲突机制
Django的权限系统是靠groups和user_permissions这两个字段来实现多对多关联的。当咱们自定义的模型继承AbstractUser时,要是没重新定义这两个字段,它们的related_name就会和Django内置的auth.User模型的默认值(通常是user_set)撞车,导致命名冲突。

2. related_name作用
这个参数其实就是给反向查询起个别名。比如说,通过user.groups可以查到用户属于哪些组,反过来,通过Group.custom_user_groups也能查到这个组里有哪些用户。这个别名必须在整个项目里是唯一的,不然就会打架。

3. 字段重写必要性
Django比较"耿直",它不会自动为继承的字段生成新的related_name,所以咱们必须手动重新声明这两个字段,并给它们指定一个独特的related_name参数。

http://www.dtcms.com/a/607849.html

相关文章:

  • 哪个公司做的网站好html在线记账网站模板
  • 移动网站推广如何优化医疗网站模板
  • 网站网站是怎么做的wordpress中文教程
  • pip install使用国内镜像源
  • 吉林市建设工程档案馆网站游戏网站建设与策划
  • 企业网页设计尺寸seo咨询邵阳
  • 网站开发一般流程网站建设翻译英文
  • 做销售网站那家好北京有哪些著名网站
  • 在线推广企业网站的方法是表白网页生成制作
  • 引流获客工具seo赚钱方法大揭秘
  • 做邮轮的网站自己建商城型网站
  • C语言反编译技术解析 | C语言反编译的挑战与应用
  • 晋城市网站建设wordpress模板移植
  • 做网站买那种服务器好滨海做网站的价格
  • 吉林网站建设代理渠道用jsp做的网站源代码下载
  • wap手机网站描述正确的是城乡住房和建设厅官网
  • 佛冈网站建设网站建设顾问英语
  • 陕西企业网站建设哪家好泉州建设网站公司
  • 网站论坛怎么建设网站搭建 里短信
  • 陕西省住房和城乡建设厅网站首页中信建设有限责任公司企查查
  • 珠海手机微信网站建设小程序开发学校网站建设招标文件
  • Mermaid流程图高效转换为图片方案
  • 毕业室内设计代做网站广西住房城乡建设网站
  • 网站引导页动画企业建站多站点管理系统
  • 经销商自己做网站渠道推广
  • app开发网站排行企业网站加快企业信息化建设
  • 太原网站建设山西悉云科技招远做网站价格
  • 推广型网站建设模板建设网站是什么职位
  • 服务器创建多个网站吗app界面设计模板一套
  • 潍坊网站建设如何网络营销考试题及答案