---
title: "Django 1.2.4 版本发行说明"
version: 4.2
locale: zh-hans
source: https://docs.djangoproject.com/zh-hans/4.2/releases/1.2.4/
canonical: https://djangodocs.dev/zh-hans/4.2/releases/1.2.4/
---
# Django 1.2.4 版本发行说明

欢迎来到 Django 1.2.4 版本！

这是 Django 1.2 系列中的第四个“修复错误”的版本，提高了 Django 1.2 代码库的稳定性和性能。

除一个例外外，Django 1.2.4 保持了与 Django 1.2.3 的向后兼容性。它还包含了许多修复和其他改进。对于当前使用或针对 Django 1.2 的任何开发或部署，建议升级到 Django 1.2.4 。

有关 1.2 分支的新功能、向后不兼容性和已弃用功能的详细信息，请参阅 [Django 1.2 版本发行说明](/zh-hans/4.2/releases/1.2/)。

## 不向后兼容的变更

### 在管理界面中的受限过滤器

Django 的管理界面，`django.contrib.admin`，支持通过对应模型上的字段对显示的对象列表进行筛选，包括跨数据库级别的关系。这是通过在 URL 的查询字符串部分传递查找参数来实现的，ModelAdmin 类上的选项允许开发人员指定特定字段或关系，这将生成自动链接用于筛选。

一个历史上未记录且非官方支持的功能是，用户如果对模型结构和查询参数的格式有足够的了解，可以通过操作查询字符串来动态创建有用的新过滤器。

然而，已经证明这种方法可以被滥用来获取管理员用户权限之外的信息。例如，如果攻击者能够访问管理员权限并且对模型结构和关联关系有足够的了解，他们可以构造查询字符串，通过重复使用 Django 数据库 API 支持的正则表达式查询，来获取敏感信息，例如用户的密码哈希值。

为了解决这个问题，`django.contrib.admin` 现在会验证查询字符串查找参数，要么只指定在正在查看的模型上的字段，要么跨关系，并且这些跨关系必须是应用程序开发人员使用上述现有机制明确允许的。对于依赖先前能力插入任意查找的用户来说，这是不兼容的。

## 一个新功能

通常情况下，一个小版本更新不会包含新功能，但在 Django 1.2.4 的情况下，我们对这个规则做了一个例外。

Django 1.2.4 中修复的一个 bug 涉及在多数据库配置上运行测试套件时可能导致原始源数据库（即实际的生产数据库）被删除，从而导致数据灾难性丧失的一组情况。为了解决这个问题，需要引入一个新的设置 -- [`TEST_DEPENDENCIES`](/zh-hans/4.2/ref/settings/#std-setting-TEST_DEPENDENCIES) -- 允许您在数据库配置中定义任何创建顺序依赖项。

大多数用户，甚至使用多数据库配置的用户，无需担心数据丢失的 bug，也不需要手动配置 [`TEST_DEPENDENCIES`](/zh-hans/4.2/ref/settings/#std-setting-TEST_DEPENDENCIES)。有关详细信息，请参阅 [原始问题报告](https://code.djangoproject.com/ticket/14415) 文档中的 [控制测试数据库创建顺序](/zh-hans/4.2/topics/testing/advanced/#topics-testing-creation-dependencies)。

## GeoDjango

用于执行 GeoDjango 测试套件的基于函数的 [`TEST_RUNNER`](/zh-hans/4.2/ref/settings/#std-setting-TEST_RUNNER)，`django.contrib.gis.tests.run_gis_tests`，已经被弃用，改用了一个基于类的测试运行器，`django.contrib.gis.tests.GeoDjangoTestSuiteRunner`，这个变化是在这个版本中添加的。

此外，在使用 `runtests.py` 运行 Django 测试套件并使用 [空间数据库后端](/zh-hans/4.2/ref/contrib/gis/db-api/#spatial-backends) 时，现在已经包含了 GeoDjango 测试套件。
