Python 为什么是烧瓶+;Mongoengine没有';不允许显示与数据库模型不完全对应的数据库项?
为什么Flask+Mongoengine不允许显示与db模式模型不完全对应的db项 这是我的类Tweet(在Flask应用程序的models.py中),继承自Post,text和lang字段的名称相同,因为它们来自Twitter API和每条TweetPython 为什么是烧瓶+;Mongoengine没有';不允许显示与数据库模型不完全对应的数据库项?,python,mongodb,twitter,flask,mongoengine,Python,Mongodb,Twitter,Flask,Mongoengine,为什么Flask+Mongoengine不允许显示与db模式模型不完全对应的db项 这是我的类Tweet(在Flask应用程序的models.py中),继承自Post,text和lang字段的名称相同,因为它们来自Twitter API和每条Tweet class Tweet(Post): text = db.StringField(required=True) lang = db.StringField(max_length=255, required=True) 当我通过a
class Tweet(Post):
text = db.StringField(required=True)
lang = db.StringField(max_length=255, required=True)
当我通过admin保存Tweet帖子时,它会保存到Mongodb,我可以在list.html中呈现它:
{% for tweet in tweets %}
<b>Tweets list</b>
<h2><a href="{{ url_for('posts.detail', slug=tweet.slug) }}">{{ tweet.text }}</a></h2>
{% if tweet.post_type == 'Tweet' %}
<b>{{ tweet.text }}</b>
<p>{{ tweet.lang }}</p>
{% endif %}
{% endfor %}
{%用于tweets%中的tweet}
推文列表
{%if tweet.post_type=='tweet%}
{{tweet.text}
{{tweet.lang}
{%endif%}
{%endfor%}
问题:在这个集合中,我存储了很多包含所有字段的完整推文,所有这些推文都有文本和语言字段,但没有显示在浏览器中。
我使用外部脚本挖掘推文,现在想使用Flask查询现有的集合,以在web界面中显示推文。我不想在ORM中定义所有的tweet结构
我有Robomongo,我看到Twitter python库在推文附近的管理员帖子中手动添加了它。字段名为“text”和“lang”,因为在tweet JSON中它们的名称相同。确保一条tweet是一条,然后循环tweet。_dynamic_Fields
属性以获取任何动态字段的名称
比如:
{% for tweet in tweets %}
<b>Tweets list</b>
<h2><a href="{{ url_for('posts.detail', slug=tweet.slug) }}">{{ tweet.text }}</a></h2>
{% if tweet.post_type == 'Tweet' %}
<b>{{ tweet.text }}</b>
<p>{{ tweet.lang }}</p>
{% for field in tweet._dynamic_fields -%}
<p>{{ tweet[field] }}</p>
{%- endfor %}
{% endif %}
{% endfor %}
{%用于tweets%中的tweet}
推文列表
{%if tweet.post_type=='tweet%}
{{tweet.text}
{{tweet.lang}
{%用于tweet中的字段。\u动态\u字段-%}
{{tweet[field]}
{%-endfor%}
{%endif%}
{%endfor%}
这是未经测试的,我不能100%确定如何在jinja2中动态获得attr。Ross的回答是正确的,我现在想澄清让所有工作正常的过程
“\u cls”:“Post.Tweet”
attr,它就会显示出来。问题是我在推特上没有发现这样的属性。我已经使用Robomongo将其添加到现有tweet中进行测试,现在它出现在列表中,靠近简单的手动添加项“slug”:“Detective”
那么我应该更改代码的哪些部分呢&?Tweet是一个动态文档,因为它是从Post继承而来的。我应该在哪里循环?我在views.py中添加了以下内容:类ListView(MethodView):def get(self):posts=Post.objects.all()return render_template('posts/list.html',posts=posts)添加了一个伪示例-我会在html模板中这样做。