Django是創建調用時相同的遷移文件中重複創建相同的遷移:Django的遷移:正在與makemigrations
./manage.py makemigrations
同樣的遷移將在新的遷移創建文件每次makemigrations是不管的,如果運行變化是否被遷移。
過程看起來像這樣:
./manage.py makemigrations app
Migrations for 'app':
project/app/migrations/0007_auto_20171010_1837.py
- Alter field charge_type on charge
- Alter field fee_type on fee
- Alter field event_type on orderevent
./manage.py migrate app
Running migrations:
Applying mws.0007_auto_20171010_1837... OK
./manage.py makemigrations app
Migrations for 'app':
project/app/migrations/0008_auto_20171010_1838.py
- Alter field charge_type on charge
- Alter field fee_type on fee
- Alter field event_type on orderevent
./manage.py makemigrations app
Migrations for 'app':
project/app/migrations/0009_auto_20171010_1839.py
- Alter field charge_type on charge
- Alter field fee_type on fee
- Alter field event_type on orderevent
我很好奇,爲什麼相同的新移民繼續與更新遷移的文件名被創建時沒有變化正在以makemigrations之間的模型製作和遷移命令。
的模型是這樣的:
當前應用模式:
class OrderEvent(models.Model):
client = models.ForeignKey('clients.Client')
SHIPMENT_EVENT = 'she'
REFUND_EVENT = 'ree'
CHARGEBACK_EVENT = 'cbe'
GUARANTEE_CLAIM_EVENT = 'gce'
EVENT_TYPE_CHOICES = {
(SHIPMENT_EVENT, 'Shipment Event'),
(REFUND_EVENT, 'Refund Event'),
(CHARGEBACK_EVENT, 'Chargeback Event'),
(GUARANTEE_CLAIM_EVENT, 'Guarantee Claim Event'),
}
event_type = models.CharField(max_length=3, choices=EVENT_TYPE_CHOICES)
amazon_order_id = models.CharField(max_length=19)
seller_order_id = models.CharField(max_length=19)
marketplace_name = models.CharField(max_length=14)
posted_date = models.DateTimeField(blank=True, null=True)
class ShipmentItem(models.Model):
order_event = models.ForeignKey('OrderEvent')
seller_sku = models.CharField(max_length=128)
order_item_id = models.CharField(max_length=19)
quantity_shipped = models.IntegerField()
class Charge(models.Model):
shipment_item = models.ForeignKey('ShipmentItem', blank=True, null=True)
PAYMENT_METHOD_FEE = 'pmf'
EXPORT_CHARGE = 'exc'
SAFET_REIMBURSEMENT = 'str'
OTHER = 'oth'
CHARGE_TYPE_CHOICES = {
(PAYMENT_METHOD_FEE, 'Payment Method Fee'),
(EXPORT_CHARGE, 'Export Charge'),
(SAFET_REIMBURSEMENT, 'SAFET Reimbursement'),
(OTHER, 'Other'),
}
charge_type = models.CharField(
max_length=3,
choices=CHARGE_TYPE_CHOICES,
blank=True,
null=True
)
charge_currency_code = models.CharField(
max_length=3,
blank=True,
null=True
)
charge_amount = models.DecimalField(
max_digits=10,
decimal_places=2,
blank=True,
null=True
)
class Fee(models.Model):
shipment_item = models.ForeignKey('ShipmentItem', blank=True, null=True)
TAPING_FEE = 'taf'
TRANSPORTATION_FEE = 'trf'
OTHER = 'oth'
FEE_TYPE_CHOICES = {
(TAPING_FEE, 'Taping Fee'),
(TRANSPORTATION_FEE, 'Transportation Fee'),
(OTHER, 'Other'),
}
fee_type = models.CharField(
max_length=3,
choices=FEE_TYPE_CHOICES,
blank=True,
null=True
)
fee_currency_code = models.CharField(
max_length=3,
blank=True,
null=True
)
fee_amount = models.DecimalField(
max_digits=10,
decimal_places=2,
blank=True,
null=True
)
客戶端應用程序模型:
class Client(models.Model):
name = models.CharField(max_length=128)
code = models.CharField(
max_length=16,
blank=True,
unique=True,
help_text="Example: 00042",
)
slug = AutoSlugField(max_length=128, unique=True, populate_from='name')
INVOICE_LEVEL_PARENT = 'pa'
INVOICE_LEVEL_CHILD = 'ch'
INVOICE_LEVEL_CHOICES = {
(INVOICE_LEVEL_PARENT, 'Parent-level Invoice'),
(INVOICE_LEVEL_CHILD, 'Child-level Invoice'),
}
invoice_level = models.CharField(
max_length=2,
choices=INVOICE_LEVEL_CHOICES,
default=INVOICE_LEVEL_PARENT,
)
payment_terms = models.CharField(max_length=30, default='Net 15')
late_fees = models.DecimalField(default='1.50', max_digits=5, decimal_places=2)
notes = models.TextField(blank=True)
def __str__(self):
return self.name
這裏添加您的模型代碼。我認爲你在字段中使用默認值作爲動態。 –
請顯示修改實際正在進行的操作。 –
同意 - 這可能是因爲你的模型定義中有些事情是不確定的(動態的選擇可能會在一分鐘之間改變?一個datetime.datetime.now()調用某處?) – ryanmrubin