2016-02-12 58 views
2

當我編輯模型以獲得更多字段並進行遷移時,Django將不會添加新字段而不刪除舊字段。Django只添加模型中的一個字段

這裏是模型

class Testimonial(models.Model): 
    name = models.CharField(max_length=20, null=True), 
    quote = models.CharField(max_length=255, null=True), 
    test = models.CharField(max_length=20, null=True) 

這是我得到的終端 '推薦'

遷移:
0004_auto_20160212_1537.py:
- 從告別賽
刪除場報價 - 添加現場測試以證明

並且這是最近的遷移

from __future__ import unicode_literals 

from django.db import migrations, models 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('testimonials', '0003_auto_20160212_1536'), 
    ] 

    operations = [ 
     migrations.RemoveField(
      model_name='testimonial', 
      name='quote', 
     ), 
     migrations.AddField(
      model_name='testimonial', 
      name='test', 
      field=models.CharField(max_length=20, null=True), 
     ), 
    ] 
+0

刪除所有遷移,這種運行後'蟒蛇manage.py makemigrations',刪除數據庫和遷移 – erajuan

回答

2

我敢肯定,這個問題是由你的後綴字段的逗號引起的,在python中,這表明你正在創建一個元組,它將把下一行作爲該元組對象的延續,你需要將其刪除

class Testimonial(models.Model): 
    name = models.CharField(max_length=20, null=True), 
    quote = models.CharField(max_length=255, null=True), 
    test = models.CharField(max_length=20, null=True) 

應該

class Testimonial(models.Model): 
    name = models.CharField(max_length=20, null=True) 
    quote = models.CharField(max_length=255, null=True) 
    test = models.CharField(max_length=20, null=True) 
0

如果您不想刪除「quote」 - 只需手動刪除此遷移的操作。

operations = [ 
    migrations.AddField(
     model_name='testimonial', 
     name='test', 
     field=models.CharField(max_length=20, null=True), 
    ), 
] 

並執行:python manage.py migrate app_name。也許當你創建一個遷移時,你不小心評論了這個字段。

相關問題