0

我有以下模型:

class User(Document):
    first_name = StringField(required=True)
    last_name = StringField(required=True)
    username = StringField(required=True)

class TwitterUser(User):
    meta = {"collection":"TwitterUsers"}
    access_token = StringField(required=True)
    twitter_id = StringField(required=True)

class FacebookUser(User):
    meta = {"collection":"FacebookUsers"}
    fb_id = StringField(required=True)
    access_token = StringField(required=True)

在我的应用程序的某个时刻,我需要根据 access_token 检索用户。但是,如果我有一个 Twitter 用户并且我执行 User.objects(access_token=at).get() 我没有得到结果。如果我这样做 TwitterUser.objects(access_token=cookie).get() 它可以工作。

有没有办法通过查询父集合来获取子类?

4

1 回答 1

1

目前这是不可能的——因为User不知道它的孩子已经搬家并住在另一个收藏中。您确定孩子们需要不同的收藏吗?如果是这样,您必须进行多次查询并User在找到后停止。

或者,您可能想要更改架构并抽象出查询的公共部分,然后将社交平台特定部分放在不同的集合中,但通过 a 链接GenericReferenceField- 这意味着您总是有 2 个查询。

于 2012-09-18T19:20:31.590 回答