開発環境で初めて南をセットアップしようとしています。以前にいくつかのモデルをセットアップしました。South のインストールが完了したら、south のドキュメントに従って既存のアプリを変換しました。
ただし、以下のトレースバックを取得しています。何か案は?
ありがとうございました。
./manage.py convert_to_south testapp
Creating __init__.py in '/home/testapp/../testapp/migrations'...
Traceback (most recent call last):
File "./manage.py", line 14, in <module>
execute_manager(settings)
File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
utility.execute()
File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/management/commands/convert_to_south.py", line 70, in handle
management.call_command("schemamigration", app, initial=True, verbosity=verbosity)
File "/usr/lib/python2.6/site-packages/django/core/management/__init__.py", line 166, in call_command
return klass.execute(*args, **defaults)
File "/usr/lib/python2.6/site-packages/django/core/management/base.py", line 220, in execute
output = self.handle(*args, **options)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/management/commands/schemamigration.py", line 140, in handle
for action_name, params in change_source.get_changes():
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/creator/changes.py", line 444, in get_changes
model_defs = freeze_apps([self.migrations.app_label()])
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/creator/freezer.py", line 35, in freeze_apps
model_defs[model_key(model)] = prep_for_freeze(model)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/creator/freezer.py", line 71, in prep_for_freeze
fields = modelsinspector.get_model_fields(model, m2m=True)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/modelsinspector.py", line 411, in get_model_fields
args, kwargs = introspector(field)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/modelsinspector.py", line 371, in introspector
kwargs[kwd] = get_value(field, defn)
File "/usr/lib/python2.6/site-packages/South-0.7.6-py2.6.egg/south/modelsinspector.py", line 268, in get_value
if "default" in options and value == options['default']:
File "/usr/lib/python2.6/site-packages/django/db/models/fields/__init__.py", line 124, in __cmp__
return cmp(self.creation_counter, other.creation_counter)
AttributeError: class NOT_PROVIDED has no attribute 'creation_counter'
これが私のモデルコードです。
syncdb で既に動作しているテーブルが少なくとも 20 個ありました。テーブルを削除して再作成するのが面倒なので、南に変換したかっただけです。トラブルシューティングのためにモデル コードのほとんどを削除しましたが、これが残っています。それでも、まったく同じトレースバックが得られます。
import datetime
import urllib
from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.contrib.admin.util import quote
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import smart_unicode
from django.utils.safestring import mark_safe
from django.db import connection, transaction
"""
class BaseTable(models.Model):
updated = models.DateTimeField(_('updated'), auto_now=True)
created = models.DateTimeField(_('created'), auto_now_add=True)
is_active = models.BooleanField(_('active'), default=True)
class Meta:
abstract = True
"""
class UserProfile(models.Model):
# This field is required.
user = models.OneToOneField(User)
# Other fields here
accepted_eula = models.BooleanField()
favorite_animal = models.CharField(max_length=20, default="Dragons")