Table of Contents
Django1.8更新整理
新功能
- 1.8可以支持jinja2模板,而且可以同时支持多个模板了
检查配置安装相关参数
python manage.py check --deploy --settings=production_settings
- 新增数据库字段类型,UUIDField(重启后是否有重复), DurationField
- 添加了TestCase.setUpTestData函数, 在每个TestCase运行一次; 相比较setUp是每个用例运行一次,提高了运行速度
- makemigrations添加–exit参数,在遇到错误时直接退出
- 添加showmigrations命令查看修改及依赖
不兼容操作
- 多表修改时,使用trasaction操作
关联对象如果不是已经保存的对象,赋值时会报错
>>> book.author = Author(name="john") Traceback (most recent call last): ... ValueError: Cannot assign "<Author: John>": "Author" instance isn't saved in the database.
可以使用allow_unsaved_instance_assignment属性兼容以前版本
- 自定义command添加args参数(兼容性检查)
数据库查询操作需要检查对象类型
>>> book = Book.objects.create(name="Django") >>> book = Book.objects.filter(author=book) Traceback (most recent call last): ... ValueError: Cannot query "<Book: Django>": Must be "Author" instance.
select_related中的参数必须是有对应的字段名和在数据库中有关联数据的
>>> book = Book.objects.select_related('nonexistent_field') Traceback (most recent call last): ... FieldError: Invalid field name(s) given in select_related: 'nonexistent_field' >>> book = Book.objects.select_related('name') Traceback (most recent call last): ... FieldError: Non-relational field given in select_related: 'name'
- AbstractUser.last_login可以允许null,在升级时需要makemigrations
ref: 1.8changes