Django在每个'makemigrations'之后创建迁移文件是因为set?

问题描述:

我注意到我的Django项目中有奇怪的东西。 每次运行python manage.py makemigrations命令时,都会为我的应用程序创建一个名为notifications的新迁移文件。我向模型做了零变化,但创建了新的迁移文件。我可以运行makemigrations命令N次并创建N个迁移文件。Django在每个'makemigrations'之后创建迁移文件是因为set?

模型看起来如下:

from django.db import models 
from django.db.models.fields import EmailField 


class EmailLog(models.Model): 
    email = models.EmailField(max_length=70, null=False) 
    subject = models.CharField(max_length=255, null=False) 
    html_body = models.TextField(null=False) 
    sent_choices = { 
     ('OK', 'Sent'), 
     ('KO', 'Not sent'), 
     ('KK', 'Unexpected problems') 
    } 
    status = models.CharField(max_length=2, choices=sent_choices, 
           null=False, default='KO') 
    sent_log = models.TextField(null=True) 
    sent_date = models.DateTimeField(auto_now_add=True, null=False) 

每个迁移只是交换​​场的位置。就这样!

是因为​​有一个随机命令?我如何避免它?

+1

这不是一本字典,它是一组字面。 –

你是对的 - 这是因为set,这是无序的。

我会建议使用tuple来代替。

sent_choices = (
    ('OK', 'Sent'), 
    ('KO', 'Not sent'), 
    ('KK', 'Unexpected problems') 
) 

元组也用于the django docs