Как решить проблему зависимости файлов и сайтов в моем проекте - PullRequest
1 голос
/ 15 апреля 2020

В настоящее время я начал работать над проектом Django, предоставленным мной для обучения.

Я выполнил все необходимые настройки в моем virtualenv, и при выполнении команды migrate в моем проекте я получаю вид ниже проблем с зависимостями, как показано ниже.

Я пытался найти решение в Интернете и django do c, но ничего не понял.

Traceback


Traceback (most recent call last):
  File "manage.py", line 40, in <module>
    execute_from_command_line(sys.argv)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 89, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/executor.py", line 20, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/loader.py", line 49, in __init__
    self.build_graph()
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/loader.py", line 306, in build_graph
    _reraise_missing_dependency(migration, parent, e)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/loader.py", line 276, in _reraise_missing_dependency
    raise exc
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/loader.py", line 302, in build_graph
    self.graph.add_dependency(migration, key, parent)
  File "/home/moon/production/remax/remax_env/lib/python3.6/site-packages/django/db/migrations/graph.py", line 126, in add_dependency
    parent
django.db.migrations.exceptions.NodeNotFoundError: Migration core.0002_auto_20200408_0215 dependencies reference nonexistent parent node ('filer', '0008_auto_20200408_0215')

Фрагмент из файла миграции, как показано ниже. 0002_auto_20200408_0215.py

class Migration(migrations.Migration):

    dependencies = [
        ('filer', '0008_auto_20200408_0215'),
        ('sites', '0003_auto_20200408_0215'),
        ('core', '0001_initial'),
    ]

Я думал комментировать строки зависимостей из файлов 0002_auto_20200408_0215.py, но мой друг сказал мне, что это должно работать без удаления каких-либо строк.

Может кто-то, пожалуйста, подскажите мне, что я делаю неправильно и как решить эту проблему.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Как представляется, миграция django -файла с указанным именем 0008_auto_20200408_0215.

https://github.com/divio/django-filer/tree/master/filer/migrations

Учитывая, что суффикс _20200408_0215 идентичен файлу миграции вашего собственного приложения - возможно, ваш файл миграции был отредактирован?

Когда вы зависите от миграций внешних пакетов, ваше приложение будет использовать те, которые поставляются с пакетом. В обычном рабочем процессе вы не должны создавать файлы миграции для других приложений.

TLDR; Решение

Найдите последнюю версию миграции, доступную в установленном приложении 'django -filer', и отредактируйте файл миграции для ее использования.

Пример

ls /usr/local/lib/python3.7/site-packages/filer/migrations/
0001_initial.py             0004_auto_20160328_1434.py  0007_auto_20161016_1055.py  0010_auto_20180414_2058.py  __pycache__
0002_auto_20150606_2003.py  0005_auto_20160623_1425.py  0008_auto_20171117_1313.py  0011_auto_20190418_0137.py
0003_thumbnailoption.py     0006_auto_20160623_1627.py  0009_auto_20171220_1635.py  __init__.py

Вы будете нужно проверить python3 .6 вместо python3 .7, и вы можете проверить dist-пакеты, а также пакеты сайта в зависимости от вашего дистрибутива и способа установки django -filer.

У моего тестового приложения есть файл models.py, подобный этому:

from django.db import models
from filer.fields.file import FilerFileField

# Create your models here.
class Myobject(models.Model):
    name = models.CharField(max_length=100)
    other_name = models.CharField(max_length=100)
    file_field = FilerFileField(blank=True, null=True, on_delete=models.SET_NULL)

, который генерирует зависимости в файле миграции следующим образом:

# Generated by Django 3.0.5 on 2020-04-15 10:21

from django.db import migrations
import django.db.models.deletion
import filer.fields.file


class Migration(migrations.Migration):

    dependencies = [
        ('filer', '0011_auto_20190418_0137'),
        ('testthis', '0001_initial'),
    ]
<snip>

Если я вообще изменю эту зависимость ('filer', '0011_auto_20190418_0137'), Я получаю ту же ошибку.

raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration testthis.0002_myobject_file_field dependencies reference nonexistent parent node ('filer', '0011_auto')

Совместите файл миграции с последней миграцией django -файла, доступной в вашей системе.

0 голосов
/ 15 апреля 2020

Перед миграцией введите python manage.py showmigrations, и вы увидите все приложения с их миграциями (применены или нет). Проверьте, действительно ли существует приложение 'filer' с миграцией с именем '0008_auto_20200408_0215'. Если нет, приложение может отсутствовать в вашем INSTALLED_APPS (project / settings.py), и вы должны добавить его или удалить зависимость из списка зависимостей (хотя я этого не рекомендую)

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