0

私は、db 移行のために南の Django Web アプリに取り組んでいます。私は南部とジャンゴもまったく初めてです。私は公式のチュートリアルで南を使用しようとしましたが、例外で失敗しました: AttributeError: 'Options' object has no attribute 'index_together'。私はこのように南のコマンドを実行します:

python manage.py schemamigration southtut --initial  

southtut モデルは次のとおりです。

class Knight(models.Model):
    name = models.CharField(max_length=100)
    of_the_round_table = models.BooleanField()

私のプロジェクトモデルはこれです:

class Author(models.Model):
    name = models.CharField(max_length=64)
    authorId = models.CharField(max_length=32)

    def __unicode__(self):
        return self.name

    class Meta:
        db_table="Author"   

class Video(models.Model):
    videoId = models.CharField(max_length=32)
    videoUrl = models.URLField(max_length=200)
    author = models.ForeignKey(Author, null=True, related_name="videos", on_delete=models.SET_NULL)

    class Meta:
        db_table="Video"

class User(models.Model):
    token = models.CharField(max_length=50, null=True)
    favs = models.ManyToManyField(Video, related_name="fans", db_table="VideoUserR")

    class Meta:
        db_table = "User"

私が得たエラーメッセージ全体は次のとおりです。

    Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/Library/Python/2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/management/commands/schemamigration.py", line 151, in handle
    for action_name, params in change_source.get_changes():
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/creator/changes.py", line 460, in get_changes
    model_defs = freeze_apps([self.migrations.app_label()])
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/creator/freezer.py", line 37, in freeze_apps
    model_defs[model_key(model)] = prep_for_freeze(model)
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/creator/freezer.py", line 78, in prep_for_freeze
    fields['Meta'] = remove_useless_meta(modelsinspector.get_model_meta(model))
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/modelsinspector.py", line 441, in get_model_meta
    meta_def[kwd] = get_value(model._meta, defn)
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/modelsinspector.py", line 258, in get_value
    value = get_attribute(field, attrname)
  File "/Library/Python/2.7/site-packages/South-0.7.6-py2.7.egg/south/utils/__init__.py", line 38, in get_attribute
    value = getattr(value, part)
AttributeError: 'Options' object has no attribute 'index_together'  

ありがとう

4

3 に答える 3

1

これは、モデルの Meta セクションで index_together オプションを使用しようとしていることが原因のようです。ただし、このオプションは django 1.5+ でのみ使用でき、最近のバージョンの django で実行していると思います。

于 2013-05-14T23:14:27.800 に答える
1

django を 1.5.1 に更新したところ、このエラーは消えました。「index_together」がどのように出てくるのかわかりませんが、django 1.5.1 で利用できるので、必要なものが得られます。

于 2013-05-20T17:19:39.940 に答える