2012-08-13 127 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生成的迁移脚本并删除对被添加为通用关系字段的任何引用新的专栏。

相关问题