# Django 5.2.8 documentation

# Django 1.8.7 版本发行说明

2015 年 11 月 24 日

Django 1.8.7 修复了 1.8.6 中的一个安全问题和几个错误。

另外，Django 的兼容库版本的 six，即 `django.utils.six`，已升级到最新版本（1.10.0）。

## 修复了模板过滤器 `date` 中的设置泄漏可能性

如果一个应用程序允许用户指定未经验证的日期格式，并将此格式传递给 `date` 过滤器，例如 `{{ last_updated|date:user_date_format }}`，那么一个恶意用户可以通过指定设置键而不是日期格式来获取应用程序设置中的任何密钥，例如 `"SECRET_KEY"` 而不是 `"j/m/Y"`。

为了解决这个问题，被 `date` 模板过滤器使用的底层函数 `django.utils.formats.get_format()` 现在只允许访问日期/时间格式设置。

## 漏洞修复

- 在秋季 DST 更改期间，当 `USE_TZ` 为 `False` 且安装了 `pytz` 时，修复了调试视图的崩溃问题。

- 修复了 1.8.6 中的回归问题，导致没有 `allow_migrate()` 方法的数据库路由器崩溃的问题（#25686）。

- 通过恢复可以使用 `Manager` 对象作为 `ModelChoiceField` 的 `queryset` 参数的能力，修复了 1.8.6 中的回归问题（#25683）。

- 修复了 1.8.6 中的回归问题，导致具有 South 迁移的应用在 `migrations` 目录中失败的问题（#25618）。

- 修复了使用 `Prefetch` 时，如果将 `to_attr` 设置为 `ManyToManyField`，可能会导致数据丢失的问题 (#25693)。

- 通过在 Python 2 中，如果输入是字节串，再次使 `gettext()` 返回 UTF-8 字节串，修复了 1.8 中的回归问题（#25720）。

- 修复了对 `DateRangeField` 和 `DateTimeRangeField` 的序列化问题（#24937）。

- 修复了 `ArrayField` 的精确查找问题（#25666）。

- 修复了 `Model.refresh_from_db()` 更新带有 `on_delete=models.SET_NULL` 的 `ForeignKey` 字段的问题（#25715）。

- 修复了 1.8 中在代理模型删除时出现的重复查询回归问题（#25685）。

- 修复了当具有 `order_with_respect_to` 的模型的 `ForeignKey` 引用具有 `OneToOneField` 主键的模型时，导致 `set_FOO_order()` 崩溃的问题（#25786）。

- 修复了在 MySQL 上对 `PositiveIntegerField` 和 `PositiveSmallIntegerField` 进行错误验证的问题，导致值大于 4294967295 或 65535 的值通过验证，并被数据库默默截断（#25767）。