DJANGO 1.11 - Не могу найти светильники - PullRequest
0 голосов
/ 04 февраля 2019

Проблема

Я пытался использовать приборы для заполнения своей базы данных, поэтому я начал с чтения документации для loaddata, и по умолчанию она просматривает каталог приспособлений внутри каждого приложения для приборов.Моя проблема в том, что когда я запускаю python manage.py loaddata, я получаю сообщение об ошибке, но когда я даю ему путь для teams.yaml, он работает нормально.Нужно ли что-то настроить для его работы?

Документация

https://docs.djangoproject.com/en/1.11/howto/initial-data/#where-django-finds-fixture-files

Ошибка

usage: manage.py loaddata [-h] [--version] [-v {0,1,2,3}]
                          [--settings SETTINGS] [--pythonpath PYTHONPATH]
                          [--traceback] [--no-color] [--database DATABASE]
                          [--app APP_LABEL] [--ignorenonexistent] [-e EXCLUDE]
                          fixture [fixture ...]
manage.py loaddata: error: No database fixture specified. Please provide the path of at least one fixture in the command line.

Team App Dir

team
├── admin.py
├── apps.py
├── fixtures
│   └── teams.yaml
├── __init__.py
├── migrations
│   ├── 0001_initial.py
│   ├── 0002_auto_20190204_0438.py
│   ├── 0003_remove_team_team_name.py
│   ├── `enter code here`0004_team_team_name.py
│   ├── __init__.py
│   └── __pycache__
│       ├── 0001_initial.cpython-36.pyc
│       ├── 0002_auto_20190204_0438.cpython-36.pyc
│       ├── 0003_remove_team_team_name.cpython-36.pyc
│       ├── 0004_team_team_name.cpython-36.pyc
│       └── __init__.cpython-36.pyc
├── models.py
├── __pycache__
│   ├── admin.cpython-36.pyc
│   ├── apps.cpython-36.pyc
│   ├── __init__.cpython-36.pyc
│   └── models.cpython-36.pyc
├── tests.py
└── views.py

Модель

from django.db import models

class Team(models.Model):
    team_name = models.CharField(max_length=32)
    team_description = models.TextField(max_length=512, blank=False)

    class Meta:
        permissions = (
            ('create_team', 'Can create a team'), 
        )

Светильник (teams.yaml)

- model: team.Team
  pk: 1
  fields:
    team_name: team_name_example
    team_descrition: team_description_example

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Если вы определите FIXTURE_DIRS в вашем файле настроек, чтобы django нашел ваши приборы, которые там есть.

settings.py

FIXTURE_DIRS = [
    os.path.join(BASE_DIR, 'fixtures')
]
# statements

Reference

0 голосов
/ 04 февраля 2019

В сообщении об ошибке указывается: No database fixture specified. Please provide the path of at least one fixture in the command line.

Вам необходимо предоставить команду fixturename in loaddata, в вашем случае:

python manage.py loaddata team

В документе указано, чтопо умолчанию Django будет искать в папке fixtures внутри вашего приложения с указанным fixturename.Также команда принимает ./path/to/fixtures/, который отменяет поиск в каталоге приборов.

...