2014-01-21 3 views
2

Когда я пытаюсь выполнить новую миграцию, используйте функцию -auto. python manage.py schemamigration blogger --auto показывает:AttributeError: объект 'TaggableManager' не имеет атрибута 'primary_key'

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

Taggit известно запутать Юг они даже упомянуть об этом где-то в глубине там документации. Посмотрите на http://south.readthedocs.org/en/latest/customfields.html#field-name-patterns и посмотрите, поможет ли это.

В основном вы должны сказать Юг игнорировать taggit использовать что-то вроде:

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

Снова я получил ту же ошибку. Правильно ли добавлять эти шаги в models.py. Или мне нужно включить его в другое место. – htoniv