【问题标题】:Mongoengine query listfieldMongoengine 查询列表字段
【发布时间】:2015-04-15 07:30:28
【问题描述】:

我有以下型号:

class Deal(Document):
    stores = ListField(ReferenceField('Store', dbref=False), required=True)

class Store(Document):
    fb_page_id = StringField(verbose_name=_('Facebook PageId'), default="")

我已经尝试通过 store.fb_page_id 查询 Deal

def get_current_deal_by_fb_page_id(self, request):
    pageid=1556714851256344
    store=Store.objects(fb_page_id=pageid)
    return Deal.objects(stores__fb_page_id=pageid).all()

def get_current_deal_by_fb_page_id(self, request):
    pageid=1556714851256344
    return Deal.objects(__raw__={'stores.fb_page_id': pageid})

但我无法获取数据。这里有什么问题?

【问题讨论】:

    标签: python django mongoengine


    【解决方案1】:

    我找到了答案:

    class Deal(Document):
        stores = ListField(ReferenceField('Store', dbref=False), required=True)
    
        @classmethod
        def deals_by_fb_page(cls, fb_page_id):
            deals = []
            for deal in cls.objects():
                for store in deal.stores:
                    if store.fb_page_id == fb_page_id:
                        deals.append(deal)
            return deals
    

    【讨论】:

    • 这对于大型数据集来说效率非常低
    猜你喜欢
    • 2019-05-05
    • 2013-01-11
    • 2013-01-14
    • 1970-01-01
    • 2014-02-03
    • 2017-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多