应用程序 models.py 中缺少 django 数据库中的 Django user_id

问题描述 投票:0回答:1

几天前我开始了这个关于 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”

django django-models django-views project django-database
1个回答
0
投票

好的,所以我从同事那里得到了一些帮助,解决方案是删除 sqlite3 数据库并重新运行迁移以重新设置所有内容。感谢您的帮助,但我的问题已解决。

© www.soinside.com 2019 - 2024. All rights reserved.