Django разводит YML? django не загружает файл фикстур YML (yml - неизвестная сериализация)

Я успешно создал свой первый проект django.

У меня есть два приложения в моем проекте foo и foobar.

Я создал папку с именем «fixtures» в каждом из папки приложений. Я НЕ указал каталог фикстур в моем settings.yml, поэтому ( в соответствии с документами ) django должен искать в моей папке {app} / fixtures.

В {app} / fixtures папка у меня есть несколько файлов YML. Я разделил исходные данные для различных модулей на отдельные файлы YML, убедившись в отсутствии межфайловых зависимостей (т. Е. Все связанные модели находятся в одном файле YML, а предки появляются в файле до моделей, которые их используют).

Однако когда я бегу. / Управляю.

[Edit]

Я установил PyYaml и переименовал свои файлы фикстур в соответствии с инструкциями Manoj. Я могу продвинуться немного дальше, но у меня все еще возникают проблемы (кстати, я использую PyYaml 3.0.9).

Вот модель в моем проекте ORM (т.е. {app} /model.py ):

class Currency(models.Model):
    short_name = models.CharField(max_length=3, db_index=True, unique=True, null=False) # ISO Code
    long_name = models.CharField(max_length=64, db_index=True, unique=True, null=False)
    spot_settle = models.IntegerField(null=False, default=0)
    rounding = models.IntegerField(null=False, default=2)

Вот файл YAML, который я импортирую:

Currency:    
  currency_aud : { short_name: AUD , long_name: Australia - Dollars , spot_settle: 0, rounding: 2 }    
  currency_cad : { short_name: CAD , long_name: Canada - Dollars , spot_settle: 0, rounding: 2 }    
  currency_eur : { short_name: EUR , long_name: Euro Member Countries - Euro , spot_settle: 0, rounding: 2 }    
  currency_gbp : { short_name: GBP , long_name: United Kingdom - Pounds , spot_settle: 0, rounding: 2 }    
  currency_jpy : { short_name: JPY , long_name: Japan - Yen , spot_settle: 0, rounding: 2 }    
  currency_usd : { short_name: USD , long_name: United States Of America - Dollars , spot_settle: 0, rounding: 2 }    
  currency_zar : { short_name: ZAR , long_name: South Africa - Rand, spot_settle: 0, rounding: 2 }    
  currency_hkd : { short_name: HKD , long_name: Hong Kong Dollar, spot_settle: 0, rounding: 2 }    
  currency_nzd : { short_name: NZD , long_name: New Zealand Dollar, spot_settle: 0, rounding: 2 }    
  currency_sgd : { short_name: SGD , long_name: Singapore Dollar, spot_settle: 0, rounding: 2 }    
  currency_dkk : { short_name: DKK , long_name: Danish Krone, spot_settle: 0, rounding: 2 }    
  currency_sek : { short_name: SEK , long_name: Swedish Krona, spot_settle: 0, rounding: 2 }    
  currency_chf : { short_name: CHF , long_name: Swiss Franc, spot_settle: 0, rounding: 2 }

Вот трассировка стека при запуске ./manage.py loaddata myapp / fixtures / currencies.yaml

me@somebox:~/work/demo/myproj$ ./manage.py loaddata reference/fixtures/0100_currency.yaml 
Installing yaml fixture 'reference/fixtures/0100_currency' from absolute path.
Problem installing fixture 'reference/fixtures/0100_currency.yaml': Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/django/core/management/commands/loaddata.py", line 165, in handle
    for obj in objects:
  File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/pyyaml.py", line 57, in Deserializer
    for obj in PythonDeserializer(yaml.load(stream), **options):
  File "/usr/local/lib/python2.6/dist-packages/django/core/serializers/python.py", line 84, in Deserializer
    Model = _get_model(d["model"])
TypeError: string indices must be integers, not str

5
задан j0k 13 February 2013 в 17:37
поделиться