2013-07-24 2 views
0

У меня возникли проблемы с кажущимся простым запросом sqlalchemy с использованием Flask.Запросы Flask-SQLAlchemy

У меня есть таблица под названием «Ссылки», и внутри этой таблицы есть столбцы «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 без всякой удачи.

Спасибо заранее!

ответ

1

Он корректно отображает объект «Ссылка», возвращаемый запросом. Вам необходимо отформатировать его в шаблоне.

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

Возможно, вы выбрали плохое имя «группа» при езде на велосипеде по результатам в шаблоне. Его следует называть ссылкой.

+0

Спасибо! Это отлично поработало. Еще один вопрос. Как я могу отфильтровать вывод, чтобы не отображать повторяющиеся группы? – jmbmxer

0

В шаблоне вы можете отобразить название группы, используя {{ link.group }} вместо {{ link }}. Запрос возвращает весь объект.