web2py表单中的多个表实例

时间:2011-10-08 12:44:37

标签: database web2py

尝试在web2py中创建一个poll应用程序。

型号

db.define_table('t_query',
    Field('f_content', type='text', requires=IS_NOT_EMPTY(),
          label=T('Content')),
    SQLField('is_active',db.auth_user,writable=False,readable=False),
    auth.signature,
    migrate=settings.migrate)

db.define_table('t_option',
    Field('f_ocontent', type='string',requires=IS_NOT_EMPTY(),
          label=T('Option')),
    auth.signature,
    migrate=settings.migrate)

控制器

def ask():
    form=SQLFORM.factory(db.t_query,db.t_option,db.t_option)
    if form.process().accepted:
        id = db.t_query.insert(**db.t_query._filter_fields(form.vars))
        form.vars.client=id
        id = db.t_option.insert(**db.t_option._filter_fields(form.vars))
        response.flash='Thanks for filling the form'
        id = db.t_option.insert(**db.t_option._filter_fields(form.vars))
        response.flash='Thanks for the question'
    return dict(form=form)

查看

{{extend 'layout.html'}}

<h2>Start a Poll</h2>
{{=form}}

输出
current

我试图找到如何让SQLFORM在表单中多次使用同一个表中的字段。

这就是我的期望:
gexpectation

我该如何解决?

在web2py @ googlegroups https://groups.google.com/forum/#!topic/web2py/48tO5ncC2t4

上提出相同的问题

1 个答案:

答案 0 :(得分:1)

听起来您希望能够存储单个字段的字符串列表。据我所知,你不能多次重复同一个字段(数据在数据库中的位置?只有一个字段可以包含它,所以如果你想要0,你需要序列化它并将其插入那里。 .n值在单个字段中)

使用此选项可在单个字段中获取多个字符串:

db.define_table(...
  ...
  Field('f_ocontent', 'list:string')
)

这将在内部存储数据:

|option1val|option2val|option3val|

或者,如果为空:

||

当您处于具有超过0个字符的输入时,您可以按Enter键,它将创建一个新输入。