gpt4 book ai didi

django - 为什么django改变FileField的storage属性的时候会创建迁移文件,而storage type没有存储在数据库中?

转载 作者:行者123 更新时间:2023-12-03 16:05:46 25 4
gpt4 key购买 nike

每当我更改 FileField 的存储时,我都不想创建迁移文件。我从 settings.py 获取存储类,它是可配置的。

设置.py

Storage =  S3BotoStorage(bucket='example')

模型.py
 from django.conf import settings

class myModel(models.Model):
file = models.FileField(upload_to='', blank=True, storage=settings.Storage)

最佳答案

TLDR:这是一次空迁移,它是无害的,让它继续阅读或尝试不同的东西可能只是浪费时间

每当您对模型进行更改时,django 都必须进行迁移,因为它需要跟踪一段时间内对模型所做的更改。然而,这并不总是意味着将在数据库中进行修改。这里产生的迁移是空的。您的迁移可能看起来像这样,您会说,干草不是空的!!

class Migration(migrations.Migration):

dependencies = [
('stackoverflow', '0010_jsonmodel'),
]

operations = [
migrations.AlterField(
model_name='jsonmodel',
name='jfield',
field=stackoverflow.models.MyJsonField(),
),
migrations.AlterField(
model_name='parent',
name='picture',
field=models.ImageField(storage=b'Bada', upload_to=b'/home/'),
),
]

但它是!!做就是了
./manage.py sqlmigrate <myapp> <migration_number>

而且你会发现它不会产生任何SQL!引自 manual正如@sayse 所建议的

Django will make migrations for any change to your models or fields - even options that don’t affect the database - as the only way it can reconstruct a field correctly is to have all the changes in the history, and you might need those options in some data migrations later on (for example, if you’ve set custom validators).

关于django - 为什么django改变FileField的storage属性的时候会创建迁移文件,而storage type没有存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41137856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com