Django-的目標繼承nonrel是保持與Django的ORM具有相同的行爲,但允許使用非關係存儲後端。由於Django不允許將多個不同的模型存儲在相同的(關係)表中,因此我不驚訝得知Django-nonrel也不存在。
如果你想要描述的行爲,你可以看看Mongoengine,一個用於MongoDB的ODM(對象文檔映射器),它受Django ORM的啓發和類似的感覺,但允許更靈活的模式和行爲,就像你所描述的那樣。
特別是,使用Mongoengine的時候,你可以創建多個類,它們的記錄被存儲在同一個集合中,如:
class BlogPost(mongoengine.Document):
create_date = mongoengine.DateTimeField()
mod_date = mongoengine.DateTimeField()
title = mongoengine.StringField()
meta = {
'abstract': True,
}
def save(self):
if not self.pk:
self.create_date = datetime.utcnow()
self.mod_date = datetime.utcnow()
super(BlogPost, self).save()
class TextBlogPost(BlogPost):
body = mongoengine.StringField()
class ImageBlogPost(BlogPost):
image = mongoengine.FileField()
caption = mongoengine.StringField()
由於TextBlogPost
和ImageBlogPost
既繼承BlogPost
,他們都將被保存在同一收藏(默認情況下,名爲「blog_post」)。
文檔數據庫ORM的關鍵點不是什麼關係?爲什麼所有的抽象?如果你直接使用數據庫驅動程序,我猜會更容易。 – mnemosyn 2011-12-18 14:17:17