Недавно созданный проект Django не будет генерировать миграции - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь добавить простую модель и запустить ее миграцию во вновь созданном приложении Django (2.2.7). Поскольку я совершенно новичок в Django, мне кажется, что я пропускаю некоторые важные настройки. Я перечислил шаги, которые я сделал ниже, включая сообщение об ошибке внизу.

django-admin startproject myproject
cd myproject
django-admin startapp myapp

Это текущая структура проекта

➜  myproject tree
.
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── myproject
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Это manage.pyfile:

#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os
import sys


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

Я добавляю приложение myapp в myproject/settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myproject.apps.MyappConfig'
]

Я добавляю модель в myapp/models.py:

from django.db import models


class Post(models.Post):
    title = models.CharField(max_length=100)

Теперь я хочу создать миграции на основе модели:

python3 manage.py makemigrations

Я получаю следующую ошибку:

➜  myproject python3 manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 361, in execute
    self.check()
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 390, in check
    include_deployment_checks=include_deployment_checks,
  File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 377, in _run_checks
    return checks.run_checks(**kwargs)
  File "/usr/local/lib/python3.7/site-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/usr/local/lib/python3.7/site-packages/django/core/checks/urls.py", line 35, in check_url_namespaces_unique
    if not getattr(settings, 'ROOT_URLCONF', None):
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 79, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python3.7/site-packages/django/conf/__init__.py", line 64, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting ROOT_URLCONF, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

Насколько я понимаю, DJANGO_SETTINGS_MODULE должно бытьустановить в файле manage.py. Что мне не хватает? Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 08 ноября 2019

Возможно, это была опечатка в вопросе, но в ваших установленных приложениях ...

INSTALLED_APPS = [
    ...,
    'myproject.apps.MyappConfig'
]

в соответствии с вашим деревом проекта должно быть

INSTALLED_APPS = [
    ...,
    'myapp.apps.MyappConfig'
]
0 голосов
/ 08 ноября 2019
Kindly activate your virtual environment

Add 'myapp' in settings.py  - installed_app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

then execute:-
python3 manage.py makemigrations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...