姜戈。每次迁移都重复“更改字段...”

问题描述 投票:0回答:1

我的模型是这样的:

class Deal(models.Model):
    in_quantity = models.IntegerField()
    exchange = models.CharField(max_length=255)
    note = models.TextField(max_length=10000, null=True)
    time_deal = models.DateTimeField(default=datetime.now())
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

每次迁移我都会得到这个操作:

    - Alter field time_deal on deal

这里是迁移的例子:

class Migration(migrations.Migration):

    dependencies = [
        ("portfolio", "0024_rename_quantity_deal_in_quantity_and_more"),
    ]

    operations = [
        migrations.AlterField(
            model_name="deal",
            name="note",
            field=models.TextField(max_length=10000, null=True),
        ),
        migrations.AlterField(
            model_name="deal",
            name="time_deal",
            field=models.DateTimeField(
                default=datetime.datetime(2023, 4, 26, 16, 59, 46, 769292)
            ),
        ),
        migrations.AlterField(
            model_name="historicaldeal",
            name="note",
            field=models.TextField(max_length=10000, null=True),
        ),
        migrations.AlterField(
            model_name="historicaldeal",
            name="time_deal",
            field=models.DateTimeField(
                default=datetime.datetime(2023, 4, 26, 16, 59, 46, 769292)
            ),
        ),
    ]

你能帮我在每次迁移中避免它吗?

我在网上搜索了解决方案,但一无所获。

django postgresql django-models django-migrations
1个回答
0
投票

你不应该通过

datetime.now()
,因为每次都会评估并因此创建一个新的迁移。

您可以改为传递一个可调用对象,然后在需要时对其进行评估:

class Deal(models.Model):
    in_quantity = models.IntegerField()
    exchange = models.CharField(max_length=255)
    note = models.TextField(max_length=10000, null=True)
    time_deal = models.DateTimeField(default=datetime.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

如果您不想让该字段可编辑,Django 还提供了一个

auto_now_add=True
.

© www.soinside.com 2019 - 2024. All rights reserved.