我正在使用django-nonrel和django-mongodb-engine
我在PostgreSQL上存储了一个Django模型
class Author(models.Model):
name = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)我有一个MongoDB存储模型:
class Post(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(Author)每当我尝试按作者id过滤帖子时:
posts = Post.objects.filter(author__id=1)我得到以下错误:
/usr/local/lib/python2.6/dist-packages/bson/objectid.pyc in __validate(self, oid)
158 raise InvalidId("%s is not a valid ObjectId" % oid)
159 else:
--> 160 raise InvalidId("%s is not a valid ObjectId" % oid)
161 else:
162 raise TypeError("id must be an instance of (str, ObjectId), "
InvalidId: 1 is not a valid ObjectId
In [22]: Post.objects.filter(author__id=1)有什么想法吗?
发布于 2011-01-31 19:15:08
我相信“蒙戈之路”将是将作者的细节嵌入到文章中,以及所有的评论,嵌入文档中。在您的情况下,拥有多个相关的集合(表)并不是解决这个问题的最佳方法。
尽可能减少foreignKey的使用,只需嵌入数据即可。我相信MongoEngine有一个可以继承的文档和EmbeddedDocument类。
为什么要使用mongodb而不是mysql?你一定有个大博客..。;-)
发布于 2011-01-31 19:58:04
可能是:
author = Author.objects.get(pk=1)
posts = author.post_set.all()发布于 2011-02-05 21:21:14
这两个引擎是不可能混合的。最简单的解释是,MongoDB主键是类似字符串的对象,*SQL是整数。你不能两者兼用,选一个。
https://stackoverflow.com/questions/4854911
复制相似问题