0

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']) に関連付けられているすべてのグループを表示するクエリを作成する方法です。多くの filter_by および filter ステートメントを試しましたが、まったく運がありませんでした。

前もって感謝します!

4

2 に答える 2

0

テンプレートでは、{{ link.group }}代わりに を使用してグループ名を表示できます{{ link }}。クエリはオブジェクト全体を返しています。

于 2013-07-24T18:09:18.733 に答える