几天前我开始了这个关于 Django 的教程: https://www.youtube.com/watch?v=sm1mokevMWk
该视频介绍了如何使用 django 中的一些库来设置您的第一个 django 项目,以及如何引导来设计您的网站。他继续介绍如何设置数据库、网站以及待办事项网站示例所需的所有其他内容,在视频系列的最后,他介绍了设置用户以及特定于用户的待办事项列表。我尝试重新创建该流程,直到用户特定的待办事项列表为止,这一切都非常容易理解且易于遵循。然而,当我尝试实现实现的最后一步时,我收到以下错误:
OperationalError at /create/
table main_todolist has no column named user_id
Request Method: POST
Request URL: http://127.0.0.1:8000/create/
Django Version: 5.0.1
Exception Type: OperationalError
Exception Value:
table main_todolist has no column named user_id
Exception Location: C:\\Entwicklung\\Python\\Python312\\Lib\\site-packages\\django\\db\\backends\\sqlite3\\base.py, line 328, in execute
Raised during: main.views.create
Python Executable: C:\\Entwicklung\\Python\\Python312\\python.exe
Python Version: 3.12.0
Python Path:
\['C:\\Users\\brenneckeo\\Desktop\\Django Projekt\\meineSeite',
'C:\\Entwicklung\\Python\\Python312\\python312.zip',
'C:\\Entwicklung\\Python\\Python312\\DLLs',
'C:\\Entwicklung\\Python\\Python312\\Lib',
'C:\\Entwicklung\\Python\\Python312',
'C:\\Entwicklung\\Python\\Python312\\Lib\\site-packages'\]
Server time: Wed, 28 Feb 2024 14:18:52 +0000
当我尝试创建
ToDoList
时,会弹出错误。当您这样做时,您将进入 /view
页面,其中列出了您创建的 ToDoList
的项目(这是一个数据库模型,指的是 TodoList
的模型),您可以添加新项目并检查向上任何项目。
这就是它应该如何工作,但我想我可以从错误代码中读出的是,显然待办事项列表没有应该引用用户的 user_id
属性,以便您可以查看不同的待办事项列表创建的。在 models.py
文件的代码中,我使用以下包创建了视频中的人:
from django.db import models
from django.contrib.auth.models import User
然后在
models.py
文件中,我的数据库将像这样创建:
class ToDoList(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user",
null=True)
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Item(models.Model):
todolist = models.ForeignKey(ToDoList, on_delete=models.CASCADE)
text = models.CharField(max_length=200)
complete = models.BooleanField()
def __str__(self):
return self.text
所以从错误代码来看,我想我必须添加一个
user_id
属性作为指向用户的外键或其他东西?视频中的人没有收到此错误消息。我猜是因为这是 3 年前的事,但我不太清楚。
我认为,由于它正在搜索某些
user_id
属性,我必须将其添加到模型中,但这没有成功。
这个:
from django.db import models
from django.contrib.auth.models import User
# Models
class ToDoList(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="user",
null=True)
name = models.CharField(max_length=200)
user_id = models.BigAutoField(on_delete=models.CASCADE, primary_key=True)
def __str__(self):
return self.name
class Item(models.Model):
todolist = models.ForeignKey(ToDoList, on_delete=models.CASCADE)
text = models.CharField(max_length=200)
complete = models.BooleanField()
def __str__(self):
return self.text
...在尝试创建待办事项列表时收到此错误代码:
TypeError:Field.__init__() 获得意外的关键字参数“on_delete”
好的,所以我从同事那里得到了一些帮助,解决方案是删除 sqlite3 数据库并重新运行迁移以重新设置所有内容。感谢您的帮助,但我的问题已解决。