2016-01-17 50 views
2

我有這樣的遷移:Django - ValueError:ModelState.fields無法引用模型類 - 「tags.to」。使用字符串引用,而不是

# encoding: utf8 
from __future__ import unicode_literals 

from django.db import models, migrations 


class Migration(migrations.Migration): 

    dependencies = [ 
     ('main', '0013_post_tags'), 
    ] 

    operations = [ 
     migrations.AddField(
      model_name='guidauser', 
      name='avatar', 
      field=models.ImageField(null=True, upload_to=''), 
      preserve_default=True, 
     ), 
    ] 

它使用Django 1.7.9完美。但是現在我已經將項目升級到了Django 1.9。如果我嘗試將它部署到(本地), 'manage.py遷移' 原因的錯誤:

enter image description here

但是,它的工作原理和Django 1.8.8

models.py:

class GuidaUser(User): 
    GENDER_MALE = 'male' 
    GENDER_FEMALE = 'female' 

    GENDER_CHOICES = (
     (GENDER_MALE, 'Чоловіча'), 
     (GENDER_FEMALE, 'Жіноча'), 
    ) 
    about_yourself = models.TextField(max_length=150, blank=True) 
    contacts = models.ForeignKey(GuidaUserContacts, blank=True, null=True, related_name='contacts') 
    avatar = models.ImageField(upload_to='avatars', null=True, blank=True) 
    gender = models.CharField(choices=GENDER_CHOICES, default=GENDER_MALE, blank=True, max_length=10) 
    birthday = models.DateField(null=True, blank=True) 
    #work = models.CharField(max_length=50) 
    ip_register = models.GenericIPAddressField(blank=True, null=True, unique=True, default=None) 
    has_username = models.BooleanField(default=True) 

    objects = UserManager() 

,似乎,這個錯誤是與以前的遷移有關(但Django的應用它),所以這裏是:

class Migration(migrations.Migration): 

dependencies = [ 
    ('main', '0012_auto_20140721_1650'), 
    ('taggit', '__first__'), 
] 

operations = [ 
    migrations.AddField(
     model_name='post', 
     name='tags', 
     field=taggit.managers.TaggableManager(to=taggit.models.Tag, through=taggit.models.TaggedItem, help_text='A comma-separated list of tags.', verbose_name='Tags'), 
     preserve_default=True, 
    ), 
] 

那麼,如何解決它?

+0

我正在使用Django 1.8.x和1.9將很快通過。你會把這段代碼包含在_models.py_中嗎? –

+0

@JavierClavero我編輯了問題.. –

+0

我一直在仔細觀察。在存儲庫Django中,這個錯誤在這裏表示,看看它是否清除了某些東西或其他人可以提供幫助。 (https://github.com/django/django/blob/master/django/db/migrations/state.py#L375) –

回答

1

更換

field=taggit.managers.TaggableManager(to=taggit.models.Tag, 
             through=taggit.models.TaggedItem, 
             help_text='A comma-separated list of tags.', 
             verbose_name='Tags') 

隨着

field=taggit.managers.TaggableManager(to='taggit.models.Tag', 
             through='taggit.models.TaggedItem', 
             help_text='A comma-separated list of tags.', 
             verbose_name='Tags') 

錯誤是告訴你,你不能有內田類,而是使用類名稱作爲字符串。

相關問題