【问题标题】:Django Model/SQL Relationship ErrorDjango 模型/SQL 关系错误
【发布时间】:2013-02-10 00:34:40
【问题描述】:

我正在使用 Python 和 Django 开发一个简单的论坛,但在为 Post 创建数据库条目时遇到了一个小问题:

(python manage.py shell):
     >>> from forums.models import User,Category,Post

     >>> nu = User(username="daniel", password="test")
     >>> nu.user_ip = "127.0.0.1"
     >>> nu.save()
     >>> User.objects.all()
         [<User: daniel>]

     >>> c = Category(category_name="Default")
     >>> c.save()
     >>> Category.objects.all()
         [<Category: Default>]

     >>> p = Post(post_name="Test", post_content="Hello, world", category=Category.objects.get(pk=1), poster=User.objects.get(pk=1))
     >>> p.save()

"/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", 第 344 行,执行中 返回 Database.Cursor.execute(self, query, params) DatabaseError: 表 forums_post 没有名为 category_id 的列

这是我的 models.py 文件:

from django.db import models
from datetime import date

class User(models.Model):
    username = models.CharField(max_length=200, unique=True)
    password = models.CharField(max_length=300)
    creation_date = models.DateField(default=date.today)
    user_ip = models.IPAddressField()

    def __unicode__(self):
        return self.username

class Category(models.Model):
    category_name = models.CharField(max_length=50)

    def __unicode__(self):
        return self.category_name

class Post(models.Model):
    post_name = models.CharField(max_length=150)
    post_content = models.CharField(max_length=500)
    category = models.ForeignKey(Category)
    poster = models.ForeignKey(User)

    def __unicode__(self):
        return self.post_name

为什么要查找“category_id”列?感谢所有帮助。

【问题讨论】:

  • 你的数据库中的 id 列叫什么名字是 category_id 吗?

标签: python django sqlite


【解决方案1】:

除非您在定义外键时指定 db_column,否则 Django 会在尝试查询数据库时将 _id 附加到您提供的属性名称中。

我猜在您的数据库中,您的专栏称为category。

您可以将列名更改为 category_id 或定义您的类别外键,如下所示:

category = models.ForeignKey(Category, db_column='category')

【讨论】:

  • Works.>>> from forums.models import User,Category,Post >>> user = User(username="daniel", password="test",user_ip="127.0.0.1") >>> user.save() >>> cat = Category(category_name="Default") >>> cat.save() >>> post = Post(post_name="Test", post_content="Hello, world!" , category=cat, poster=user) >>> post.save() >>> Post.objects.all() []
猜你喜欢
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2016-06-16
  • 2017-01-24
  • 2019-09-19
相关资源
最近更新 更多