Python 无法使用IDs进行查询-Django MongoDB引擎
我正在使用Python 无法使用IDs进行查询-Django MongoDB引擎,python,django,mongodb,django-nonrel,Python,Django,Mongodb,Django Nonrel,我正在使用django nonrel和django mongodb引擎 我有一个Django模型存储在PostgreSQL上: class Author(models.Model): name = models.CharField(max_length=100) created = models.DateTimeField(auto_now_add=True) 我有一个MongoDB存储模型: class Post(models.Model): title = mode
django nonrel
和django mongodb引擎
我有一个Django模型存储在PostgreSQL上:
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)
有什么想法吗?我相信“mongo方式”是将作者的详细信息以及所有评论嵌入到嵌入的文档中。在您的案例中,拥有多个相关集合(表)并不是解决此问题的最佳方法 尽可能减少foreignKey的使用,只需嵌入数据即可。我相信MongoEngine有一个Document和EmbeddedDocument类,您可以从中继承 为什么要使用mongodb和mysql?你一定有一个很大的博客…;-) 可能是:
author = Author.objects.get(pk=1)
posts = author.post_set.all()
这两台发动机不可能混合使用。对此最简单的解释是MongoDB主键是类似字符串的对象,*SQL PK是整数。您不能同时使用这两个,请选择一个。很公平,我现在将外键改为简单整数。博客不是最终的应用程序(很遗憾:)