问题描述
假设我有这两个模型:
class Post(db.Document):
title = db.StringField(required=True)
author = db.ReferenceField(Author)
...
def __repr__(self):
return '<Post {}>'.format(self.title)
def __unicode__(self):
return self.title
class Author(db.Document):
name = db.StringField(required=True)
...
def __repr__(self):
return '<Author {}>'.format(self.name)
def __unicode__(self):
return self.name
然后我有一个类,它接收模型,发出请求并将值作为列表返回。对于所有 ReferenceFields
,我希望它获得在其 __unicode__ method
中定义的值(就像 FLASK-ADMIN
那样):
class Demo:
def __init__(self,model):
self.model = model
def get_query(self):
query_set = self.model.objects
pipeline = self.get_aggregate_pipeline()
if pipeline:
query_set = self.model.objects.aggregate(pipeline)
return query_set
def get_ref_fields(self):
return [k for k,v in self.model._fields.items() if isinstance(v,mongoengine.fields.ReferenceField)]
def get_aggregate_pipeline(self):
ref_fields = self.get_ref_fields()
pipeline = []
for i in ref_fields:
# Currently,I'm performing some Mongo lookups on each ref field
return pipeline
def get_list(self):
query = self.get_query()
query_to_list = [i for i in query]
return query_to_list
Demo(Post).get_list()
如您所见,我可以在模型上获取所有 ReferenceFields
。但是如何从 __unicode__
或 __str__
方法对引用类进行连接?
这显然与 flask-Admin
使用的技术相同,但我无法理解他们是如何实现的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)