django运行报错:SystemCheckError: System check identified some issues的一些个人理解

今天,在自己练习写django框架时,自定义了User类。
在这里插入图片描述
可以看到,这样的代码是一点错都没有的,但是却出了这样一个错误。在这里插入图片描述
这让我很无奈,不明白为什么会出现这样的错误,但是我大概知道是因为继承了AbstractUser的原因,于是接下来我看了源码。
我查到了系统的User,是这样的。在这里插入图片描述
这么短的的代码,就有一点值得我在意,那个全部大写的东西,我们在setting中知道,全大写的东西一般都是系统定义好的,我决定看看这个东西代表什么。
在这个路径下在这里插入图片描述
我找到了这个系统帮我们定义好的变量。
在这里插入图片描述
哎呦,这个东西看着很眼熟哎,auth不是那个app名字么,User不是auth中models里面的那个类吗,这就有点意思了。在这里插入图片描述
我们首先了解下当我们迁移数据库时的过程,当我们执行迁移后,只会走自己写的app,那些已经被迁移过了,我们是不是可以这样猜想,django知道你可能会重新编写自带的User,就在auth中的User里留下了印记,这个印记是谁,就加载谁,这也是为了防止你在数据库中有两个几乎一样的表,没必要。

当你在自己写的app中重新继承后,django就大概明白你的意思了,你丫的是想重写这个方法啊,那我帮你把门,防止你忘记改印记,所以当你忘记改印记时,并且还重写了以后,就会出错,让你记起你没有把标记改了。但是如果你没改标记,还没运行,直接上传mysql后,你在数据库里存在的表就是系统自带的User,他会先走auth,发现印记没改,就把这个表给弄下来了,你后来的继承就不给搞了。
简单来说,当执行加载到auth的User后,他说,你印记都改了,要我去找xx应用的User吧,然后系统就加载了那个xx应用的User。

最后说一下怎么改那个变量名。
在setting重新给那个变量赋值就好了。值是什么呢,从他自带的那个我们大概就明白了,是app名.类名。

只是个人理解,忘各位斧正。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当你在运行Django项目时,可能会遇到`SystemCheckError`错误,它通常表示Django系统检查发现了一些问题。这些问题可能包括模型定义的问题、应用程序配置的问题等等。通常,当你执行以下命令时,Django会自动运行系统检查: ``` python manage.py runserver ``` 如果系统检查发现了问题,它会输出一个或多个错误消息,并在最后显示`SystemCheckError`错误。例如: ``` SystemCheckError: System check identified some issues: ERRORS: blog.Article.author: (fields.E301) Field defines a relation with model 'auth.User', which is either not installed, or is abstract. blog.Article.author: (fields.E307) The field blog.Article.author was declared with a lazy reference to 'auth.user', but app 'auth' doesn't provide model 'user'. blog.Comment.user: (fields.E301) Field defines a relation with model 'auth.User', which is either not installed, or is abstract. blog.Comment.user: (fields.E307) The field blog.Comment.user was declared with a lazy reference to 'auth.user', but app 'auth' doesn't provide model 'user'. System check identified 4 issues (0 silenced). ``` 在这个例子中,系统检查发现了4个问题,其中3个与auth.User有关,因为`blog.Article`和`blog.Comment`模型都定义了与`auth.User`模型的关系,但是`auth.User`模型似乎不存在。 要解决这个问题,你需要检查你的Django项目中的模型定义和应用程序配置,并确保所有依赖于的模型都存在,并且在应用程序配置中正确注册。一旦你修复了这些问题,再次运行`python manage.py runserver`命令,就应该不再遇到`SystemCheckError`错误了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值