分类标签归档:Django

Django将数据从Sqlite迁移到MySQL


背景

最近在做一个内部项目时,为了开发效率,所以选择了Sqlite作为数据库,在项目上线时需要将数据库切换到MySQL。

操作步骤

  1. 使用dumpdata将数据导出到文件
python manage.py dumpdata -> data.json
  1. 修改django的settings配置,改为MySQL

  2. 使用loaddata将数据导入到新数据库

python manage.py loaddata data.json

等待命令执行完毕之后,可以自行检查数据是否正确导入。

常见问题

由于字段过长导致的导入失败

这种问题是因为Sqlite对于字段长度并不做校验,比如我们定义一个...

Read more

Django使用fixture简化测试用例


在编写测试用例时需要提前准备测试用的数据。在Django中,有2种比较推荐的准备测试数据的办法:

  1. 在测试用例的setUp方法种添加测试用数据
  2. 使用fixture将测试数据导入到数据库

使用setUp添加数据

在setUp方法中添加测试数据的写法比较简单,例如:

class EXPtest(TestCase):
    def setUp(self):
        self.level0 = Level.objects.create(level=0, exp=0)
        self.level1 = Level.objects.create(level=1, exp=5)
...

Read more

修改django admin里的时间显示格式


在使用Django Admin做一些业务系统时发现它默认的时间格式是类似于:

May 8, 2020, 11:55 a.m.

这对于一般的客户来说,读起来有点麻烦。所以经常会收到反馈是希望有一个易读性更强的时间字段。实现方法很简单,可以这样:

在ModelAdmin中,添加一个新的时间方法,例如:

def formated_time(self, obj):
    return obj.timefield.strftime("%Y-%m-%d %H:%M:%S")

然后指定它对应的ORM中的字段以及字段的说明:

formated_time.admin_order_field = 'tim...

Read more