一对多关系Web2py

时间:2015-05-21 06:23:39

标签: web2py

这是我的Model

db.define_table('person',
                    Field('name'),
                    format='%(name)s')
db.define_table('thing',
                    Field('name'),
                    Field('owner_id', 'reference person'),
                    format='%(name)s')

这是Controller

def ref():
    rows = db(db.person.id==db.thing.owner_id).select()
    return locals()

这是View

{{for row in rows:}}
<h1>{{=row.person.name}}</h1><h3>{{=row.thing.name}}</h3>
{{pass}}

我可以在这里使用join并循环遍历所有人并获取他们的东西。

我的问题是:我如何随机选择一个人并仅获取该人的东西?

我已经尝试了几种不同的方法来实现这一点,但我显然遗漏了一些东西。我希望得到一些指导。

1 个答案:

答案 0 :(得分:1)

这可能不太漂亮,但请尝试:

def function():
    from random import randint
    persons = db(db.person.id > 0).count()
    rand = randint(1, persons)
    the_person = db.person(rand)
    persons_things = db(db.thing.owner_id == rand).select()
    for thing in persons_things:
        print thing
    return dict(the_person=person, persons_things=things)

观点:

<h1>{{=person.name}}´s Things:</h1>
<p>
    {{=for thing in things:}}
        {{=thing.name}}
    {{pass}}
    </br>
</p>