首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用IDs引擎进行查询

无法使用IDs引擎进行查询
EN

Stack Overflow用户
提问于 2011-01-31 19:03:24
回答 3查看 1.8K关注 0票数 0

我正在使用django-nonreldjango-mongodb-engine

我在PostgreSQL上存储了一个Django模型

代码语言:javascript
复制
class Author(models.Model):
    name = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)

我有一个MongoDB存储模型:

代码语言:javascript
复制
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过滤帖子时:

代码语言:javascript
复制
posts = Post.objects.filter(author__id=1)

我得到以下错误:

代码语言:javascript
复制
/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)

有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-31 19:15:08

我相信“蒙戈之路”将是将作者的细节嵌入到文章中,以及所有的评论,嵌入文档中。在您的情况下,拥有多个相关的集合(表)并不是解决这个问题的最佳方法。

尽可能减少foreignKey的使用,只需嵌入数据即可。我相信MongoEngine有一个可以继承的文档和EmbeddedDocument类。

为什么要使用mongodb而不是mysql?你一定有个大博客..。;-)

票数 2
EN

Stack Overflow用户

发布于 2011-01-31 19:58:04

可能是:

代码语言:javascript
复制
author = Author.objects.get(pk=1)
posts = author.post_set.all()
票数 0
EN

Stack Overflow用户

发布于 2011-02-05 21:21:14

这两个引擎是不可能混合的。最简单的解释是,MongoDB主键是类似字符串的对象,*SQL是整数。你不能两者兼用,选一个。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4854911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档