2017-10-15 44 views
0

我注意到我的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

這不是一本字典,它是一組字面。 –

回答

2

你是對的 - 這是因爲set,這是無序的。

我會建議使用tuple來代替。

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

元組也用於the django docs

相關問題