是否有可能使用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()
安东尼在评论中提供的答案结束了工作。
改变模式,以低于作品索引功能。我需要的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()