首页 > 解决方案 > django 模型在每次迁移时都会收到 Alter Field 警报

问题描述

每次运行命令时,我都会收到更改归档警报,python manage.py makemigrations我还删除了我的数据库旧迁移文件,但警报仍然存在,有人知道我该如何解决这个问题吗?

Migrations for 'assignment':
  assignment/migrations/0012_auto_20201016_0754.py
    - Alter field city on assignment
    - Alter field status on assignment
class Assignment(models.Model):

    CITY_SELECT = {
        ('i', 'Islamabad'),
        ('l', 'Lahore'),
        ('m', 'Multan'),
        ('k', 'Karachi'),
        ('q', 'Queta'),
        ('p', 'Pashawar')
    }

    STATUS_SELECT = {
        ('p', 'Pendding'),
        ('d', 'Done'),
        ('i', 'In field'),
        ('c', 'Cancel')
    }

    place = models.CharField(max_length=100)
    desc = models.CharField(max_length=500)
    reporter = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    created_on = models.DateTimeField(auto_now_add=True)
    assign_time = models.DateTimeField(auto_now=False, null=True)
    city = models.CharField(choices=CITY_SELECT, max_length=9)
    status = models.CharField(choices=STATUS_SELECT, max_length=8)

标签: python-3.xdjangodjango-modelsdjango-formsdjango-views

解决方案


很可能该集合每次都以不同的顺序“洗牌”,从而产生choices不可预测的情况。如果多次运行 Python 进程,则每次的散列常数都是不同的。您可以使用列表,这将确保顺序始终相同:

class Assignment(models.Model):
    
    CITY_SELECT = [  # ← use a list
        ('i', 'Islamabad'),
        ('l', 'Lahore'),
        ('m', 'Multan'),
        ('k', 'Karachi'),
        ('q', 'Queta'),
        ('p', 'Pashawar')
    ]
    
    STATUS_SELECT = [  # ← use a list
        ('p', 'Pendding'),
        ('d', 'Done'),
        ('i', 'In field'),
        ('c', 'Cancel')
    ]

    place = models.CharField(max_length=100)
    desc = models.CharField(max_length=500)
    reporter = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
    created_on = models.DateTimeField(auto_now_add=True)
    assign_time = models.DateTimeField(auto_now=False, null=True)
    city = models.CharField(choices=CITY_SELECT, max_length=9)
    status = models.CharField(choices=STATUS_SELECT, max_length=8)

推荐阅读