假设我有一个定义如下的模型:
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/