AttributeError:'TaggableManager'对象没有属性'primary_key'

时间:2014-01-21 08:59:38

标签: django python-2.7 django-tagging

当我尝试使用-auto功能进行新迁移时。 python manage.py schemamigration blogger --auto它显示:

You cannot use --auto on an app with no migrations. Try --initial.

所以我在终端python manage.py schemamigration blogger --initial中再次运行第一次迁移。我收到了这个错误:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/management/commands/schemamigration.py", line 151, in handle
    for action_name, params in change_source.get_changes():
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/creator/changes.py", line 460, in get_changes
    model_defs = freeze_apps([self.migrations.app_label()])
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/creator/freezer.py", line 32, in freeze_apps
    frozen_models.update(model_dependencies(model))
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/creator/freezer.py", line 96, in model_dependencies
    depends.update(field_dependencies(field, checked_models))
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/creator/freezer.py", line 132, in field_dependencies
    value = get_attribute(field, attrname)
  File "/usr/local/lib/python2.7/dist-packages/South-0.8.1-py2.7.egg/south/utils/__init__.py", line 38, in get_attribute
    value = getattr(value, part)
AttributeError: 'TaggableManager' object has no attribute 'primary_key'

这是应用程序博主的models.py

from django.db import models
from taggit.managers import TaggableManager

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    created = models.DateTimeField()
    tags = TaggableManager()

    def __unicode__(self):
        return self.title

1 个答案:

答案 0 :(得分:1)

众所周知,Taggit会让南方感到困惑,他们甚至会在文档的内部深处提到这一点。看看http://south.readthedocs.org/en/latest/customfields.html#field-name-patterns,看看它是否有帮助。

基本上你必须告诉South忽略taggit,比如:

from south.modelsinspector import add_ignored_fields
add_ignored_fields(["^taggit\.managers"])