2013-02-24 54 views
0

我正在使用Python & Django的,但我對郵政創建數據庫條目時遇到了一個小問題一個簡單的論壇:Django的型號/ SQL關係錯誤

(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", line 344, in execute return Database.Cursor.execute(self, query, params) DatabaseError: table forums_post has no column named 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」?所有幫助讚賞。

+0

什麼是你的數據庫的ID列被稱爲是它命名CATEGORY_ID? – 2013-02-24 22:26:34

回答

2

除非在定義外鍵時指定db_column,否則Django會將_id附加到您在嘗試查詢數據庫時給出的屬性名稱上。

我猜你的數據庫你的專欄叫做category

您可以更改列名category_id或定義您的類別外鍵是這樣的:

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

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() [] – Daniel 2013-02-24 22:33:31