2012-08-13 91 views
1

這是South &嘗試設置新環境的問題。在遷移運行在所有我的應用程序中,我得到以下錯誤:South/Mezzanine/Django - 屬性錯誤:'NoneType'對象沒有屬性'lower'

Traceback (most recent call last): 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/migration/migrators.py", line 175, in _run_migration 
    migration_function() 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/migration/migrators.py", line 57, in <lambda> 
    return (lambda: direction(orm)) 
    File "/Users/emilepetrone/Sites/tindie2/tindie/tindie/apps/seller/migrations/0001_initial.py", line 26, in forwards 
    ('comments', self.gf('mezzanine.generic.fields.CommentsField')(object_id_field='object_pk', to=orm['generic.ThreadedComment'])), 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/db/generic.py", line 44, in _cache_clear 
    return func(self, table, *args, **opts) 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/db/generic.py", line 343, in create_table 
    for field_name, field in fields 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/db/generic.py", line 643, in column_sql 
    field = self._field_sanity(field) 
    File "/Users/emilepetrone/Sites/tindie2/lib/python2.7/site-packages/south/db/mysql.py", line 263, in _field_sanity 
    type = self._db_type_for_alter_column(field).lower() 
AttributeError: 'NoneType' object has no attribute 'lower' 

這似乎是與我的models.py內我最後schemamigration什麼問題。

在我的模型,現場看起來像(和移民之間的關係尚未改變):

from mezzanine.generic.fields import CommentsField 

class MyClass(models.Model): 
    comments = CommentsField(verbose_name=_("Comments")) 

從遷移:

'generic.threadedcomment': { 
     'Meta': {'ordering': "('submit_date',)", 'object_name': 'ThreadedComment', '_ormbases': ['comments.Comment']}, 
     'by_author': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), 
     'comment_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['comments.Comment']", 'unique': 'True', 'primary_key': 'True'}), 
     'replied_to': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'comments'", 'null': 'True', 'to': "orm['generic.ThreadedComment']"}) 
    }, 

我有點困惑,因爲這個領域沒有按在遷移之間不會改變,&夾層沒有改變。預先感謝您的想法。

+0

你有沒有找到解決這個問題的方法?我正在努力解決同樣的問題。 – 2017-06-20 08:49:50

回答

0

從我所看到的,問題是,Mezzazine的CommentsField延伸GenericRelationGenericRelation.db_type()回報None,因爲它是Django的語法糖和領域沒有在模式一欄表示,但南方仍試圖產生ALTER TABLE SQL語句並試圖通過有效地調用None.lower()來設置列類型,這就是爲什麼你會得到異常。

這似乎是這樣一個明顯的錯誤,它可能是我的理解是完全關閉的,但從我看到你應該能夠手動編輯South生成的遷移腳本並刪除對被添加爲通用關係字段的任何引用新的專欄。

相關問題