利用好Django的小技巧

随缘更新, 随时停更

1. 完全彻底重置数据库(删库) - 5/12

很多时候项目经过多次迭代, 修改了太多次 model, 数据库变得奇怪起来, 就算代码没有错, 有些地方跑起来总是不正确, 特别是用 admin 来管理/查看的时候
这时候如果数据不重要, 可以尝试重置数据库再来测试你的项目/代码

不过我的小项目还没迭代多少次, model 就改乱了, 出现了上面的问题, 所以记录一下这样的解决方法

1. 删除所有的migrations

CentOS 下, 可以在 manage.py 所在目录执行下面的命令(注意权限):

1
2
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

如果在其他环境, 可以手动删除这些文件, 每个 app, migrations 目录下的除了 __init__.py 的文件

2. 删除db.sqlite3文件

db.sqlite3manage.py 所在目录下

3. 重新生成migrations

manage.py 所在目录下执行(注意 python 版本, 注意权限):

1
2
python manage.py makemigrations
python manage.py migrate

完成

2. 对 PUT DELETE 方法的处理 - 5/25

Django 本身对于 PUTDELETE 请求并没有像POST/GET那样有一个字典结构, 所以需要一些额外处理:

1
2
3
4
5
from django.http import QueryDict

# 转为字典
put = QueryDict(request.body)
value = put.get('key')

顺便回忆一下, 取 POST 方法参数的方法:

1
value = request.POST['key']

3. 删除 QuerySet

一次查询可能包含很多 model, 可以直接调用以下方法全部删除

1
2
Post.objects.all().delete()
Post.objects.filter(pub_date__gt=datetime.now()).delete()

api
many to one