【问题标题】:im not able to makemigrations to my already built model after extending user model to it in django在 django 中将用户模型扩展到它之后,我无法迁移到我已经构建的模型
【发布时间】:2020-04-09 13:36:29
【问题描述】:

我在迁移到我的 django 项目时遇到了错误。 在我已经开发了 50% 的项目中,我使用所有者模型来代表商店的所有者,然后我使用用户模型进行登录和注册。 所以我尝试在我的所有者模型中使用用户模型,这样我就可以有效地利用这两个模型和其他字段。 我尝试使用 onetoone 字段在所有者模型中扩展用户模型。 这样做之后,我无法进行迁移,所以我删除了所有迁移文件,但之后它开始在进行迁移时出现此错误:-

py 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 "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\core\management\commands\makemigrations.py", line 87, in handle
    loader = MigrationLoader(None, ignore_no_migrations=True)
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
    self.build_graph()
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\loader.py", line 274, in build_graph
    raise exc
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\loader.py", line 248, in build_graph
    self.graph.validate_consistency()
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\graph.py", line 195, in validate_consistency
    [n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)]
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\graph.py", line 195, in <listcomp>
    [n.raise_error() for n in self.node_map.values() if isinstance(n, DummyNode)]
  File "C:\Users\Mayur\PycharmProjects\StartUp\venv\lib\site-packages\django\db\migrations\graph.py", line 58, in raise_error
    raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration listings.0001_initial dependencies reference nonexistent parent node ('owners', '0001_initial')

这是我的所有者模型:-

from django.db import models
from django.contrib.auth.models import User


class Owner(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE, default=False)
    name=models.CharField(max_length=200)
    photo=models.ImageField(upload_to='photos/%Y/%m/%d/')
    description=models.TextField(blank=True)
    phone=models.CharField(max_length=20)
    email=models.CharField(max_length=20)

    def __str__(self):
        return self.name

我希望能在这方面得到帮助,因为我完全被困在这里,也不知道如何解决这个问题。

【问题讨论】:

  • 您是否删除了 django_migrations 表中的数据库行?
  • 不,我没有从数据库中删除任何行或数据。我所做的只是我的 django 项目的迁移文件夹中的 0001 和 002 迁移文件。

标签: django makemigrations


【解决方案1】:

您正在使用术语“我的 django 项目的迁移文件夹”(在上面的评论中),这是错误的 - 您项目中的每个应用程序都有自己的迁移文件夹。具体来说,您的“列表”应用程序中仍有一个迁移,它会将您删除的迁移之一列为依赖项。

【讨论】:

  • 是的,我从所有者应用迁移文件夹中删除了文件。在我的列表应用程序中,我的迁移文件夹下有 0001 文件。
【解决方案2】:

在查看和调试堆栈跟踪后,我终于摆脱了这个问题。 我从与所有者模型有关系的列表应用程序中删除了迁移文件 0001,然后当我运行 makemigrations 命令时,它没有像我上面提到的那样给我任何错误或异常。

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 2014-05-10
    • 2012-12-26
    • 2019-09-15
    • 2019-11-04
    • 1970-01-01
    • 2017-08-05
    • 2019-07-12
    相关资源
    最近更新 更多