Django与MongoDB引擎 - 对象ID问题!

4 投票
1 回答
1387 浏览
提问于 2025-04-16 06:09

我正在使用Django 1.3beta,并且用django-mongodb-engine作为数据库后端。

我遇到的问题是,当我保存一个设置了主键的对象时,出现了这个错误:

/usr/local/lib/python2.6/dist-packages/django/db/models/fields/__init__.pyc in get_prep_lookup(self, lookup_type, value)
    290             return value
    291         elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
--> 292             return self.get_prep_value(value)
    293         elif lookup_type in ('range', 'in'):
    294             return [self.get_prep_value(v) for v in value]

/usr/local/lib/python2.6/dist-packages/django/db/models/fields/__init__.pyc in get_prep_value(self, value)
    477         if value is None:
    478             return None
--> 479         return int(value)
    480
    481     def contribute_to_class(self, cls, name):

    ValueError: invalid literal for int() with base 10: '4cc75881006e4a1e0f000000'

我猜这是因为mongodb中的项目是以十六进制的形式存储的,而django则期望的是整数。

有没有什么建议可以解决这个问题?

1 个回答

3

你需要使用django的一个非关系型数据库的分支版本,也就是django-nonrel。如果你查看你发的链接,会看到在“要求”部分有说明。

撰写回答