编辑:Django版本1.6.1
尝试通过admin创建RedditPost对象时,我一直收到此错误:
no such column: subreddit_id
subreddit_id
错误引用RedditPost.subreddit
(不是Subreddit.subreddit),然后由于某种原因在最后添加_id
。
参考没有问题。尝试从管理员创建RedditPost时,Subreddits的下拉菜单会显示所有可用的Subreddits对象。
class Subreddit(models.Model):
subreddit = models.CharField(max_length=100, primary_key=True)
title = models.CharField(max_length=100, null=False)
def __unicode__(self):
return smart_unicode(self.subreddit)
class RedditPost(models.Model):
comments_link = models.CharField(max_length=256, primary_key=True)
submitted_link = models.CharField(max_length=256, null=False)
rank = models.IntegerField(null=False)
title = models.CharField(max_length=100, null=False)
reddit_timestamp = models.DateTimeField(null=False)
updated_at = models.DateTimeField(auto_now_add=True, auto_now=True)
subreddit = models.ForeignKey('Subreddit')
已解决/解决方案:我结束使用“刷新”,当我进行更改时,我没有清理数据库(我没有使用任何迁移)。我不得不使用:
python manage.py sqlclear "app_name" | python manage.py dbshell
要完全清除数据库,然后我必须按照此链接(Django South error with initial migration)正确执行迁移。
答案 0 :(得分:5)
_id
。有它的理由。
您的数据库表RedditPost
不会只有这个列..
更改表格后(通过添加此新列),执行:
如果django版本< 1.7 :(需要安装south)
python manage.py schemamigration yourapp --auto
python manage.py migrate yourapp
如果django版本> = 1.7:
python manage.py makemigrations
python manage.py migrate
答案 1 :(得分:1)
我有同样的问题。删除db.sqlite3文件。然后在终端上,
python3 manage.py makemigrations
python3 manage.py migrate
就是这样。但是您所有保存的数据库值将被删除。