python - Django - ValueError : ModelState. 字段不能引用模型类 - "tags.to"可以。改用字符串引用

标签 python django django-1.9

我有这个迁移:

# 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 migrate”会导致错误:

enter image description here

但是,它适用于 Django 1.8.8

模型.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,
    ),
]

那么,如何解决呢?

最佳答案

替换

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')

错误告诉您不能在字段中包含类,而是使用类名作为字符串。

关于python - Django - ValueError : ModelState. 字段不能引用模型类 - "tags.to"可以。改用字符串引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839902/

相关文章:

python - Pandas 使用 while 循环遍历数据框和列表

django - DRF - 用于查询参数验证的基本 View 集

javascript - 重定向中断图像上传

python - 测试交互式 python 程序

python - 在保留原始列表的同时传递列表

Python 代码覆盖率

python - 这是基于 django 类的 View 的错误使用吗?

python - Django:覆盖子模型中的字段标签或帮助文本

python - 对 django 时区支持感到困惑

python - 如何在 Django 1.9 中传递 callable