【问题标题】:django-ratings error: Unknown column 'resources_resources.ratings_votes' in 'field list'django-ratings 错误:“字段列表”中的未知列“resources_resources.ratings_votes”
【发布时间】:2016-03-15 17:00:08
【问题描述】:

安装和同步数据库后,我将它添加到我的模型中:

rating = RatingField(range=5)

并得到错误:

Unknown column 'resources_resources.rating_votes' in 'field list'

Docs 说:“django-ratings 的构建方式要求您将 RatingField 附加到您的模型。该字段将创建两列,一个 votes 列和一个 score 列。它们都将以您的字段名称为前缀”

我检查了数据库,并创建了 rating_score 和 ratings_vote 表,但是没有向模型添加任何列,我将 RatingField 添加到了(不确定是否应该向模型的数据库添加列)。

我错过了什么?我相信我正确地遵循了教程。我在 Django 1.6 上。如果有任何手动解决方案可以使其正常工作,那也会有所帮助。

【问题讨论】:

    标签: python mysql django django-1.6 django-ratings


    【解决方案1】:

    Django 迁移仅在 Django 1.7 中添加,而您正在运行 1.6。

    如果您使用RatingField 创建一个新模型,那么当您运行syncdb 时,Django 可能会创建数据库列。但是,没有一种简单的方法可以将这些列添加到现有模型中。

    请注意,GitHub page 表示不再维护 Django 评级。最后一次提交是在几年前。

    【讨论】:

    • 我完全按照文档中的说明使用了 python manage.py syncdb。我知道迁移在 Django 1.6 中不可用。如果手动在我的模型表上创建列可以解决问题,我会这样做。只需要有关这些列的更多信息。
    • 我的意思是,syncb 只会在表不存在的情况下创建表,它不会向现有模型添加列。在确定如何手动添加列时,您可能会发现 python manage.py sqlall <appname> 很有用。
    • 我检查了 sqlall 并得到了这个:paste.ofcode.org/hTTWvpkXkXDFTvfWtbzPJh 这 4 个表也已创建,但我没有看到任何关于模型列的提示。
    • 您似乎为评级应用运行了sqlall,而不是您将评级字段添加到的应用 (resources?)
    • 哦,我明白了... sqlall 显示评级列:ratings_votes integer UNSIGNED NOT NULL 和 ratings_score integer NOT NULL 在我的模型表中。 sqlall 报告中似乎没有任何 ForeignKey,所以这意味着我只需要创建这 2 个整数列?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多