问题描述
我是 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 迁移
希望这会奏效。