【问题标题】:django model is getting Alter Field alert on every migrationsdjango 模型在每次迁移时都会收到 Alter Field 警报
【发布时间】:2021-01-31 09:15:08
【问题描述】:

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

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 版本。看起来这组只是每次都以不同的顺序。
  • 我现在在那个项目上使用的这个python版本Python 3.8.6 (default, Sep 25 2020, 09:36:53)

标签: python-3.x django django-models django-forms django-views


【解决方案1】:

很可能该集合每次都以不同的顺序“洗牌”,从而使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)

【讨论】:

    猜你喜欢
    • 2017-07-21
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2019-10-29
    • 2021-11-29
    • 2021-07-19
    相关资源
    最近更新 更多