【问题标题】:Object is not getting saved while using django non-rel使用 django non-rel 时未保存对象
【发布时间】:2012-01-14 10:06:22
【问题描述】:

我的模型.py:

class Projects(models.Model):
    projectName =models.CharField(max_length = 100,unique=True,db_index=True)
    projectManager = models.ForeignKey('Users')

class Users(models.Model):
    name = models.CharField(max_length = 100,unique=True)
    designation = models.CharField(max_length =100 )
    team = ListField(models.CharField(max_length =100),null=True)

现在我正在尝试在 shell 中使用此代码创建一个 Projects 类对象:

user_object = Users.objects.get(name="abc")

p = Projects(projectName="xyz",projectManager = user_object)
p.save()

在 p.save() 上它给了我错误:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/base.py", line 460, in save
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/base.py", line 543, in save_base
    for f in meta.local_fields if not isinstance(f, AutoField)]
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/related.py", line 876, in get_db_prep_save
    connection=connection)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/subclassing.py", line 28, in inner
    return func(*args, **kwargs)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/__init__.py", line 276, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/subclassing.py", line 53, in inner
    return func(*args, **kwargs)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/subclassing.py", line 53, in inner
    return func(*args, **kwargs)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/__init__.py", line 271, in get_db_prep_value
    value = self.get_prep_value(value)
File "/home/aprainfo/env/lib/python2.5/site-packages/Django-1.3.1-py2.5.egg/django/db/models/fields/__init__.py", line 479, in get_prep_value
    return int(value) ValueError: invalid literal for int() with base 10: '4f1116115fcff377b2000001'

我不知道为什么它试图在最后一行将字符串转换为 int。我不知道如何摆脱这个错误?

【问题讨论】:

  • 我正在使用 mongoDB 通过 django-mongodb 存储数据

标签: python django mongodb django-models django-nonrel


【解决方案1】:

您的问题很可能与安装 django non-rel 和 mongodb-engine 有关。标准 django 期望所有 id 都是整数,而组成 django non-rel 的软件包套件会更改它以允许 mongodb 使用基于字符串的 id。

我建议按照http://django-mongodb.org/topics/setup.html 中定义的顺序重新安装您的设置

我也遇到了同样的问题,这可能是使用标准 django 而不是非 rel 的安装问题。

我的 pip requirements.txt 有这些条目:

git+git://github.com/django-nonrel/mongodb-engine.git@master
git+git://github.com/django-nonrel/django-nonrel.git@master
git+git://github.com/django-nonrel/django-permission-backend-nonrel.git@master

然后我就能做到:pip install -U -r requirements.txt

【讨论】:

  • 还要确保 pip 卸载(常规)django,我在安装 django-nonrel 之前忘记删除它并且遇到了同样的问题
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
相关资源
最近更新 更多