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

问题描述

我是 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 迁移

希望这会奏效。