我对 django 的内置评论模型有一个简单的查询,并使用 heroku 的 postgreSQL 数据库得到以下错误:
DatabaseError: operator does not exist: integer = text LINE 1:
... INNER JOIN "django_comments" ON ("pi ns_pin"."id" = "django_...
^
HINT: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
在谷歌搜索之后,似乎这个错误已经在 django 中多次解决,但我仍然得到它(所有相关问题都在 3-5 年前关闭)。我正在使用 django 1.4 版和最新版本的 sweetpie。
该查询是在 orm 过滤器下进行的,并且可以与我的开发数据库(sqlite3)完美配合:
class MyResource(ModelResource):
comments = fields.ToManyField('my.api.api.CmntResource', 'comments', full=True, null=True)
def build_filters(self, filters=None):
if filters is None:
filters = {}
orm_filters = super(MyResource, self).build_filters(filters)
if 'cmnts' in filters:
orm_filters['comments__user__id__exact'] = filters['cmnts']
class CmntResource(ModelResource):
user = fields.ToOneField('my.api.api.UserResource', 'user', full=True)
site_id = fields.CharField(attribute = 'site_id')
content_object = GenericForeignKeyField({
My: MyResource,
}, 'content_object')
username = fields.CharField(attribute = 'user__username', null=True)
user_id = fields.CharField(attribute = 'user__id', null=True)
有没有人在不编写原始 SQL 的情况下解决此错误的经验?