跳转到主要内容

使Django模型字段只读

项目描述

Deployed to PyPI Python library GitHub Repository Continuous Integration Documentation Coverage MIT License

使一些Django模型字段只读。换句话说,它允许你告诉Django从数据库中读取某些字段,但永远不要尝试写回这些字段。如果你的字段由触发器或其他内容填充,这可能很有用。

需求

  • 仅Postgresql

  • Django,从4.2到5.1进行测试

  • 使用Python,从3.8到3.12进行测试

文档

完整文档位于 https://django-readonly-field.readthedocs.org

快速入门

安装Django Readonly Field

pip install django-readonly-field

在你的 settings.py

INSTALLED_APPS = [
    # ...
    "django_readonly_field",
]

在你想使某些字段为只读的模型中

class Spaceship(models.Model):
    name = models.CharField(max_length=100)
    color = models.CharField(max_length=16)

    class ReadonlyMeta:
        readonly = ["color"]

就是这样。现在,Django不会尝试在数据库上写入 color 字段。

警告

Django不会尝试写入这些字段。结果是,你的数据库 必须 允许Django不写入这些字段。它们应该是可空的,或者有数据库默认值,或者由触发器填充,否则你会得到一个 IntegrityError

别忘了Django模型字段默认值不会成为数据库默认值。你可能需要为此编写一个SQL迁移。

运行测试

您需要一个可用的Postgresql数据库才能测试此项目。

source <YOURVIRTUALENV>/bin/activate
export DATABASE_URL=postgres://USER:PASSWORD@HOST:PORT/NAME
(myenv) $ pip install -r requirements.txt

为特定版本运行测试

(myenv) $ pytest

为所有版本运行测试(如果全局安装了tox,您不需要虚拟环境)

$ tox

致谢

此仓库曾经可在 peopledoc/django-readonly-field 找到。

用于渲染此包的工具

项目详情


下载文件

为您的平台下载文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

django_readonly_field-1.3.0.tar.gz (4.9 kB 查看哈希值)

上传时间

构建分布

django_readonly_field-1.3.0-py3-none-any.whl (5.7 kB 查看散列值)

上传时间 Python 3

由以下支持