【问题标题】:Flask-SQLAlchemy queriesFlask-SQLAlchemy 查询
【发布时间】:2013-07-24 07:20:38
【问题描述】:

我在使用 Flask 进行看似简单的 sqlalchemy 查询时遇到问题。

我有一个名为 Links 的表,在该表中有名为“id”、“author_id”、“link”和“group”的列。我的 models.py 看起来像这样:

class Links(db.Model):

__tablename__='links'

id = db.Column(db.Integer, primary_key=True)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
link = db.Column(db.String, unique=False, nullable=True)
group = db.Column(db.String, unique=False, nullable=False)


def __init__(self, author_id=None, link=None, group=None):
    self.author_id = author_id
    self.link = link
    self.group = group

def __repr__(self):
    return'<Link %r>' %(self.link)

我想返回与登录到应用程序的用户关联的所有组的值。这是我的views.py文件:

 @app.route('/members/', methods=['GET','POST'])
@login_required
def members():
    error=None
    form = PostLink(request.form, csrf_enabled = False)
    uid = session['user_id']
    link = "NULL"
    groups = Links.query.filter_by(author_id=uid).all()

    if request.method=='POST':
        if form.validate_on_submit():
            new_group = Links(
                       uid,
                       form.group.data,
                       link,
                       )
            try:
                   db.session.add(new_group)
                   db.session.commit()
                   flash("You have created a group!")
            except IntegrityError:
                    error = 'That group did not work, maybe it already exists?'
            else:
             flash_errors(form)
    return render_template('members.html', form=form, error=error, link = link, groups=groups)

还有我的“members.html”:

{% extends "base.html" %}

{% 块内容 %}

  <p>Add New Group: {{ form.group }}</p>
  <input id="link" type="hidden" name="link" value= {{ link }}/>
  <p><input type="submit" value="Request"></p>
</form>
<br/>
{% for group in groups %}
<li><p>
{{ group }}
</p></li>
{% endfor %}

{% endblock %}

目前这只是以奇怪的格式返回链接和组的列表:

<Link u'link2'>

<Link u'linky'>

<Link u'linkymaybe'>

<Link u'madeit'>

<Link u'BLAH'>

所以我的问题的核心是如何使用 SQLAlchemy 构建查询以显示与登录用户关联的所有组 (uid = session['user_id']) 我对 Flask 很陌生,这个问题正在成为问题,因为我尝试了许多 filter_by 和 filter 语句,但都没有运气。

提前谢谢你!

【问题讨论】:

    标签: sqlalchemy flask flask-sqlalchemy


    【解决方案1】:

    它正确显示了查询返回的对象“链接”。 您需要在模板中对其进行格式化。

    Thisi is link {{ group.link }} from author #{{ group.author_id }} in group named {{ group.group }}
    

    也许您在循环查看模板中的结果时选择了一个错误的名称“组”。应该叫链接。

    【讨论】:

    • 谢谢!这很好用。还有一个问题。如何过滤输出以显示没有重复的组?
    【解决方案2】:

    在模板中,您可以使用{{ link.group }} 代替{{ link }} 来显示组名。查询返回整个对象。

    【讨论】:

      猜你喜欢
      • 2019-04-23
      • 2019-12-13
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2018-05-09
      • 2019-07-22
      • 2014-10-09
      相关资源
      最近更新 更多