数据显示问题-flask,python sqlalchemy

问题描述 投票:0回答:1

嗨,我没什么问题,有两个模特,人和宠物,我有两个人,四个宠物

我想显示的内容:

  1. 人-和宠物的名字
  2. 在同一视图中,在新视图中单击“人”的名称和宠物列表后,添加具有人ID的href我这么远模型:
class Person(db.Model):

    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.Text)
    pets = db.relationship('Pet', backref='owner', lazy='joined')

    def __init__(self,name):
        self.name = name

 class Pet(db.Model):

    id = db.Column(db.Integer,primary_key= True)
    name = db.Column(db.Text)
    owner_id = db.Column(db.Integer,db.ForeignKey('person.id'))

    def __init__(self,name,owner_id):
        self.name = name
        self.owner_id = owner_id

我这么差VIEW:

def list_item():
    # Grab a list of puppies from database.
    persons = Person.query.all()
    return render_template('list.html', persons=persons)

我这么差HTML:(list.html)

{% for person in persons %}
<li>{{ person.name }} - {{ person.pets }}</li>
{% endfor %}

输出:

   • Person1 - [<Pet 3>, <Pet 4>, <Pet 1>]
   • Person2 - [<Pet 2>]

并且我想在像叫人的宠物中那样伪装成名字。

谢谢!

python flask sqlalchemy
1个回答
2
投票

在您的html模板中,person.petsPet对象的列表。您可以使用附加的for循环对其进行迭代,以获取Pet对象,然后获取它们的属性:

{% for person in persons %}
<li>
    {{ person.name }} has the following pets:
    <ul>
        {% for pet in person.pets %}
        <li> {{ pet.name }} </li>
        {% endfor %}
    </ul>
</li>
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.