Mongoengine - 如何从模型的 __str__ 或 __unicode__ 方法中获取模型的所有 ReferenceFields

问题描述

假设我有这两个模型:

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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...