Django 'migrate' 命令提示与包相关的错误

Django 'migrate' command suggesting errors related to packages

我是 Django 和 python 的新手,目前正在学习全栈 Web 开发课程,在完全按照课程显示的方式学习后,我在 models.py 中输入了以下代码文件:

from django.db import models

# Create your models here.
class Topic(models.Model):
    top_name = models.CharField(max_length=264,unique=True)

    def __str__(self):
        return self.top_name

class Webpage(models.Model):
    topic = models.ForeignKey(Topic)
    name = models.CharField(max_length=264,unique=True)
    url = models.URLField(unique=True)

    def __str__(self):
        return self.name

class AccessRecord(models.Model):
    name = models.ForeignKey(Webpage)
    date = models.DateField()

    def __str__(self):
        return str(self.date)

并尝试执行命令:

python manage.py 迁移

以下是调用此命令时出现的错误:

Traceback (most recent call last):
File "C:\Users\Naseem\desktop\my_django_stuff\first_project\manage.py", line 22, in <module>
    main()
File "C:\Users\Naseem\desktop\my_django_stuff\first_project\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    django.setup()
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\site-packages\django\apps\config.py", line 224, in create
    import_module(entry)
File "C:\Users\Naseem\anaconda3\envs\MyDjangoEnv\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked

下面是settings.py文件,installed_apps:

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

和 admin.py 文件:

from django.contrib import admin

课程显示 models.py 文件在未向 admin.py 添加任何内容的情况下工作,我不确定为什么会显示这些错误。

在你的模型中使用外键时,你必须设置 on_delete 参数,这样当你的外键指向的模型条目被删除时,django 知道如何处理这些条目。

您可以像这样修复您的 models.py:

# Create your models here.
class Topic(models.Model):
    top_name = models.CharField(max_length=264,unique=True)

    def __str__(self):
        return self.top_name

class Webpage(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    name = models.CharField(max_length=264,unique=True)
    url = models.URLField(unique=True)

    def __str__(self):
        return self.name

class AccessRecord(models.Model):
    name = models.ForeignKey(Webpage, on_delete=models.CASCADE)
    date = models.DateField()

    def __str__(self):
        return str(self.date)

您可以详细了解您对该字段的不同选择here以及它们的作用。

首先,在您的 installed_app 列表中写入

    INSTALLED_APPS = [
    .........
    'first_app.apps.FirstAppConfig',
]

代替 'first_app' 然后在 admin.py 文件中添加这个

from django.contrib import admin
from .models import *

myModels = [models.modelname, models.modelname.......]
admin.site.register(myModels)

然后在你的cmd中先写

python manage.py makemigrations

然后写

python manage.py migrate

希望这会奏效。