django模型在具有外键的字段中没有列错误

Posted

技术标签:

【中文标题】django模型在具有外键的字段中没有列错误【英文标题】:django model no column error in a field with foreign key 【发布时间】:2020-09-09 21:43:00 【问题描述】:

我有自定义用户模型

class User(AbstractUser):  
     model fields 

和另一个模型,它有一个与用户有外键关系的字段

class Comment(models.Model):
    writer = models.ForeignKey(User,on_delete=models.CASCADE,null=True,related_name='comment_writer')
    contents = models.TextField(max_length=300,null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

但是当我进行迁移并迁移应用程序和项目时,我仍然在管理页面上收到错误消息

/admin/User/comment/ 处的操作错误 没有这样的列:User_comment.writer_id 请求方法:GET 请求网址:http://localhost:8000/admin/User/comment/ Django 版本:2.2.3 异常类型:操作错误 异常值: 没有这样的列:User_comment.writer_id 异常位置:/usr/local/lib/python3.6/dist-packages/django/db/backends/sqlite3/base.py 在执行中,第 383 行 Python 可执行文件:/usr/bin/python3 Python版本:3.6.9 Python 路径: ['/home/potentad/Documents/timesello', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/potentad/.local/lib/python3.6/site-packages', '/usr/local/lib/python3.6/dist-packages', '/usr/local/lib/python3.6/dist-packages/onedrived-2.0.0-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/zgitignore-1.0.0-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/tabulate-0.8.7-py3.6.egg', '/usr/local/lib/python3.6/dist-packages/psutil-5.7.0-py3.6-linux-x86_64.egg', '/usr/lib/python3/dist-packages'] 服务器时间:2020年5月22日星期五23:20:23 +0000

出了什么问题,我该怎么办?

【问题讨论】:

您是否进行了迁移,并迁移了数据库? 如果您已经运行过make migrations,请分享迁移文件 @WillemVanOnsem 是的。 makemigrations 然后迁移 【参考方案1】:

你能运行这些行吗

python manage.py makemigrations

之后

python manage.py migrate

【讨论】:

然后它说没有这样的表:User_user 请求方法:POST 请求 URL:localhost:8000/admin/login/?next=/admin 怎么了?

以上是关于django模型在具有外键的字段中没有列错误的主要内容,如果未能解决你的问题,请参考以下文章

具有默认值的外键上的 Django 1.7 迁移错误

在 Django 中发生错误时呈现管理表单

django 查询具有外键的模型,检查该外键的属性

Django 和具有多个外键的模型

带有两个外键的 Django 保存表单

Django Rest Framework:具有通用外键的可写嵌套序列化程序