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)
每个迁移只是交换场的位置。就这样!
是因为有一个随机命令?我如何避免它?
答
你是对的 - 这是因为set,这是无序的。
我会建议使用tuple来代替。
sent_choices = (
('OK', 'Sent'),
('KO', 'Not sent'),
('KK', 'Unexpected problems')
)
元组也用于the django docs。
这不是一本字典,它是一组字面。 –