SQLFORM自引用表显示格式化值

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

是否有可能使用SQLFORM有一个递归表拉格式化的值,因为它确实对非递归表?

下面两个例子具有相同的结果,即显示基础ID值,相对于格式化的名称值的父字段。

模型

db.define_table('cat',
                Field('name', type='string', label='Name'),
                Field('parent', 'reference cat', label='Parent'),
                format='%(name)s',
               )

调节器

def index(): 
    form=SQLFORM(db.cat)

    if form.process().accepted:
        response.flash = "Updates Accepted"

    return locals()
def manage():
    form=SQLFORM.grid(db.cat, user_signature=False)

    return locals()
web2py
1个回答
0
投票

安东尼在评论中提供的答案结束了工作。

改变模式,以低于作品索引功能。我需要的IS_NULL_OR在我的使用情况,以允许值是缺少为好。

db.define_table('cat',
                Field('name', type='string', label='Name'),
                Field('parent', 'reference cat', label='Parent'),
                format='%(name)s',
               )
db.cat.parent.requires = IS_NULL_OR(IS_IN_DB(db, 'cat.id', '%(name)s'))

安东尼指出的,还需要在表示属性为SQLFORM.grid以显示正确的值,在id变量上述模型的结果被显示在所述管理功能。

在管理功能,我添加了一个代表,其可以是文字字没有,如果为空或查找父字段。

def manage():
    db.cat.parent.represent = lambda id, r: db.cat[id].name if id else 'None'
    form=SQLFORM.grid(db.cat, 
                      user_signature=False)

    return locals()
© www.soinside.com 2019 - 2024. All rights reserved.