修复 Django migration 时遇到的问题解决

yipeiwu_com6年前Python基础

今天想给自己的 Blog 加点功能,顺便补上测试,然而第一步在创建测试数据库就过不了,我就尝试解决这个问题。

在跑 ./manage.py test 时,先会创建一个测试用的数据库,这时我遇到了一个问题:

ValueError: Related model 'telegrambot.User' cannot be resolved

这个错误是指,相关的 Model telegrambot.User 无法解析,这是怎么回事?

然后因为 ./manage.py test 根本没有打印出其他有用的信息,我也不知道是发生在哪里的错误,这时我想到了一个办法,就是尝试手动建立一个数据库,叫 test,然后进行 migration:

./manage.py migrate --database test

一跑,终于有详细的输出,定位到了具体出错的那个 Migration。原来是我的一个 App 的 Model 依赖了 telegrambot.User,但是找不到。这是什么原因?

我尝试在 settings.py 的 INSTALLED_APPS 把 telegrambot 的顺序调到前面来,也没有用。于是只好启用 StackoverFlow。

原来是我的那个 App 的 Migration 的 dependencies 没有依赖 telegrambot,于是自然不会去找了。

于是把原来的,加了一行 dependency,再尝试 ./manage.py test,问题解决。

class Migration(migrations.Migration):

  dependencies = [
+    ('telegrambot', '0001_initial'),
    ('powernews', '0004_applenews'),
  ]

总结:有些命令行工具执行出错时,不会有太多有用的输出信息,这时就可以尝试手动去执行一些操作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

详解python 发送邮件实例代码

python 发送邮件实例 文件形式的邮件 #!/usr/bin/env python3 #coding: utf-8 import smtplib from emailmim...

Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)

Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。 关于时间戳的几个概念 时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移...

基于python log取对数详解

log()方法返回x的自然对数,对于x>0。 语法 以下是log()方法的语法: import math math.log( x ) 注意:此函数是无法直接访问的,所以我...

3行Python代码实现图像照片抠图和换底色的方法

3行Python代码实现图像照片抠图和换底色的方法

1、项目背景 对于不会PS的小伙伴,抠图是一个难度系数想当高的活儿,某宝照片抠图和证件照换底色均价都是5元RMB,所以今天要介绍的这款神工具,只要 3 行代码 5 秒钟就可以完成高精度抠...

python代码制作configure文件示例

在lua中,一直用lua作为config文件,或承载数据的文件 - 好处是lua本身就很好阅读,然后无需额外写解析的代码,还支持在configure文件中读环境变量,条件判断等。 在lu...