为什么迁移文件经常被排除在代码格式之外?
Why are migrations files often excluded from code formatting?
我们正在将 Black 代码风格应用于 django 项目。
在我找到的所有教程/示例中(例如in django cookiecutter and this blog),我一直看到 django 的迁移文件被排除在 linter 之外。
但在我看来,这些仍然是 python 文件。当然,django 可能不会自动生成它们来满足 Black 规范。但这并不像开发人员总是编写代码来满足 Black 规范...这就是 linting 的目的!
为什么迁移文件会被认为不同于任何其他 python 文件?!
注意我知道如果您有预先存在的迁移,则可以更改已应用的迁移 - 这需要在第一次应用时小心(坦率地说,第一次应用到代码库的其余部分也是如此)但肯定不是不这样做的理由吗?
编辑 - @torxed 要求提供 django 迁移文件的示例
我不确定这会有多大帮助,但典型的 django 迁移文件可能如下所示(在本例中,将 char 字段添加到 table):
# Generated by Django 2.2.3 on 2019-10-28 09:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0009_figures_notes_tables'),
]
operations = [
migrations.AlterField(
model_name='project',
name='processed_kmz_sha',
field=models.CharField(max_length=255),
),
]
您应该很少需要编辑迁移文件。因此,从已经商定的文件代码布局中排除是有意义的。
我硬着头皮将 Black 应用于我的迁移文件,逐步跨越六个 django 项目。
一点问题都没有,一切都在生产中部署了几个月。
所以答案是:完全没有理由不这样做,我认为迁移文件 应该 包括在内,以便阅读它们与其他文件的体验一致项目的。
我们正在将 Black 代码风格应用于 django 项目。
在我找到的所有教程/示例中(例如in django cookiecutter and this blog),我一直看到 django 的迁移文件被排除在 linter 之外。
但在我看来,这些仍然是 python 文件。当然,django 可能不会自动生成它们来满足 Black 规范。但这并不像开发人员总是编写代码来满足 Black 规范...这就是 linting 的目的!
为什么迁移文件会被认为不同于任何其他 python 文件?!
注意我知道如果您有预先存在的迁移,则可以更改已应用的迁移 - 这需要在第一次应用时小心(坦率地说,第一次应用到代码库的其余部分也是如此)但肯定不是不这样做的理由吗?
编辑 - @torxed 要求提供 django 迁移文件的示例
我不确定这会有多大帮助,但典型的 django 迁移文件可能如下所示(在本例中,将 char 字段添加到 table):
# Generated by Django 2.2.3 on 2019-10-28 09:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('api', '0009_figures_notes_tables'),
]
operations = [
migrations.AlterField(
model_name='project',
name='processed_kmz_sha',
field=models.CharField(max_length=255),
),
]
您应该很少需要编辑迁移文件。因此,从已经商定的文件代码布局中排除是有意义的。
我硬着头皮将 Black 应用于我的迁移文件,逐步跨越六个 django 项目。
一点问题都没有,一切都在生产中部署了几个月。
所以答案是:完全没有理由不这样做,我认为迁移文件 应该 包括在内,以便阅读它们与其他文件的体验一致项目的。