[英]Django-cms 1.7.10 “OperationalError - no such column” after migration
因此,我知道更改模型然后無法將遷移應用於他們的數據庫的人們已經有很多問題。 但是,就我而言,我知道已經應用了遷移,因為我可以看到新的表數據。
基本上,我安裝了django-cms,然后在djangocms_column插件的models.py
添加了一個字段,以允許我在自己的列中添加Bootstrap類名稱(例如col-md-4
, col-md-6
等)。 。
if hasattr(settings, "COLUMN_CLASS_CHOICES"):
CLASS_CHOICES = settings.COLUMN_CLASS_CHOICES
else:
CLASS_CHOICES = (
('col-md-1', _("col-md-1")),
('col-md-2', _("col-md-2")),
('col-md-3', _('col-md-3')),
('col-md-4', _("col-md-4")),
('col-md-5', _('col-md-5')),
('col-md-6', _("col-md-6")),
('col-md-7', _('col-md-7')),
('col-md-8', _('col-md-8')),
('col-md-9', _('col-md-9')),
('col-md-10', _('col-md-10')),
('col-md-11', _('col-md-11')),
('col-md-12', _('col-md-12')),
('', _('none')),
)
...
@python_2_unicode_compatible
class Column(CMSPlugin):
"""
A Column for the MultiColumns Plugin
"""
width = models.CharField(_("width"), choices=WIDTH_CHOICES, default=WIDTH_CHOICES[0][0], max_length=50)
"""
This is the new field:
"""
bs_class = models.CharField(_("bs_class"), choices=CLASS_CHOICES, default=CLASS_CHOICES[0][0], max_length=50)
def __str__(self):
return u"%s" % self.get_width_display()
然后我跑./manage.py makemigrations
然后./manage.py migrate
,現在的表看起來像這樣:
sqlite> select * from djangocms_column_column;
cmsplugin_ptr_id bs_class width
---------------- ---------- ----------
3 col-md-1 33%
5 col-md-1 33%
7 col-md-1 33%
19 col-md-1 33%
21 col-md-1 33%
23 col-md-1 33%
但是,當我嘗試訪問測試服務器時,仍然出現以下錯誤:
OperationalError at /en/
no such column: djangocms_column_column.bs_class
Request Method: GET
Request URL: http://localhost:8000/en/
Django Version: 1.7.10
Exception Type: OperationalError
Exception Value:
no such column: djangocms_column_column.bs_class
而且,是的,我嘗試刪除數據庫並運行./manage.py migrate
,但是該站點仍然顯示相同的錯誤。 必須使用一種特殊的遷移過程來修改./env/lib/python2.7/site-packages
文件夾中安裝的插件嗎?
因此,我實際上已經弄清楚了造成這種現象的原因。 在設計gulp任務時,我重新構造了項目文件夾,將所有django創建的文件都放在src
子目錄中。
我這樣做的bower_components
是,在修改gulpfile.js
或bower_components
中的文件時,以這種方式監視應用程序文件中的更改會更容易,而不會無意間觸發監視任務。 (最終,這沒關系,因為我的問題不只是django項目根目錄而已。)
除了settings.DATABASES['default']['NAME']
是相對路徑project.db
之外,這不是問題。 結果,當我從/src
目錄中運行./manage.py migrate
時,它在/src/project.db
上執行了遷移。 當我從父目錄運行src/manage.py migrate
,遷移是在/project.db
上/project.db
。 djangocms應用程序本身正在使用后者,而我一直在前者上執行所有遷移。
因此,這里的課程是:
您是否嘗試過刪除應用程序內遷移文件夾中的遷移?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.