django - Django 如何保持其逻辑约束与其数据库之间的一致性?

标签 django database django-database

假设我有一个定义如下的模型:

class Foo(models.Model):
    bar = models.CharField(max_length=10)

使用此模型,我使用以下代码在我的数据库中创建了一个 Foo 对象:

Foo.objects.create(bar="0123456789")

应该工作得很好。但是,在创建对象之后,我将 max_length 属性减少到 5。所以现在,从技术上讲,我创建的对象存在一致性错误。

Django 如何处理这种情况?我假设他们在再次保存该对象之前不会引发任何错误。如果是这样,这是针对这种情况的最佳解决方案吗?还有其他方法吗?

最佳答案

在您描述的情况下,Django 不会执行任何操作。但是,如果您运行 makemigrations,它将生成一个数据库迁移,将 db 列修改为 5 个字符;运行它会截断现有值。

关于django - Django 如何保持其逻辑约束与其数据库之间的一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53241677/

相关文章:

django - Django 是否应该自己实现 DB on_delete 规则?

python - 如何在 Python 中获取 Riak 对象、更改其值并将其与所有索引一起存储回来

mysql - 用于创建数据库并允许远程访问的 PHP 脚本不起作用

mysql - 类别表,其 cat_ID 与 cat_subcat 匹配并包含空值

python - Django 多个数据库的简单分步指南请

python - django admin 自定义命令 - 将字符串列表传递给 args

python - 错误属性 %s 不是多行的

javascript - 从 HTML 标签初始化 AngularJS 模型

python - 如何使用 Django 从数据库(MySQL)中选择 30 个唯一的随机值?

python - 无法在 django 中使用多个数据库的查询集