Невозможно выполнить миграцию в Django2 - существует ModuleNotFoundError - PullRequest
0 голосов
/ 09 июля 2019

Я новичок в Python и django, и я пытаюсь создать свой собственный веб-API.Моя структура папок выглядит следующим образом:

|-Project
|--manage.py
|--env
|--restapi
|---api
|----migrations
|----__init__.py
|----admin.py
|----apps.py
|----models.py
|----views.py
|----tests.py
|---__init__.py
|---settings.py
|---urls.py
|---wsgi.py

Я добавил 'api' к моему INSTALLED_APPS в settings.py, однако, когда я пытаюсь выполнить миграцию, я получаю ошибку

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 "/Users/myname/Documents/Project/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/Users/myname/Documents/Project/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 357, in execute
    django.setup()
  File "/Users/myname/Documents/Project/env/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/myname/Documents/Project/env/lib/python3.7/site-packages/django/apps/registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "/Users/myname/Documents/Project/env/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
    module = import_module(entry)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'api'

Я зарегистрировал модель в admin.py в папке api и добавил модуль 'api' в INSTALLED_APPS в settings.py, но все равно получаю ту же ошибку.

FROM MODELS.PY:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext_lazy as _
from django.conf import settings```


class User(AbstractUser):
    username = models.CharField(blank=True, null=True)
    email = models.EmailField(_('email address'), unique=True)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', 'first_name', 'last_name']```

    def __str__(self):
        return '{}'.format(self.email)


class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE(), related_name='profile')
    title = models.CharField(max_length=5)
    dob = models.DateField()
    address = models.CharField(max_length=255)
    country = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    zip = models.CharField(max_length=5)
    licenses = models.ImageField(upload_to='uploads', blank=True)
    photo1 = models.ImageField(upload_to='uploads', blank=True)
    photo2 = models.ImageField(upload_to='uploads', blank=True)
    photo3 = models.ImageField(upload_to='uploads', blank=True)
    photo4 = models.ImageField(upload_to='uploads', blank=True)
    photo5 = models.ImageField(upload_to='uploads', blank=True)
    photo6 = models.ImageField(upload_to='uploads', blank=True)

FROM ADMIN.PY:

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from .models import User, UserProfile


class UserProfileInline(admin.StackedInline):
    model = UserProfile
    can_delete = False


admin.site.register(User)


class UserAdmin(BaseUserAdmin):
    fieldsets = (
        (None, {'fields': ('email', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name')}),
        (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('email', 'password1', 'password2'),
        }),
    )

    list_display = ('email', 'first_name', 'last_name', 'is_staff')
    search_fields = ('email', 'first_name', 'last_name')
    ordering = ('email',)
    inlines = (UserProfileInline, )

FROM SETTINGS.PY:

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

1 Ответ

1 голос
/ 10 июля 2019

Вы должны написать 'restapi' в INSTALLED_APPS, а также ваш файл models.py должен быть в папке restapi, папка 'api' не найдена командой makemigrations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...