【发布时间】:2015-06-04 04:10:19
【问题描述】:
一般来说,我是 Web2py 和 SQL 数据库的新手,如果这是一个愚蠢的问题,请原谅我。
我要做的是创建一个表单,从 SQL 表的字段中提取相关数据(类型、标签、IS_NOT_EMPTY() 等),以在前端填充和配置输入元素。到目前为止,我已经成功地使用Web2py Manual 作为一个很好的参考来做到这一点。
我已经到了想要使用多个表来帮助更有效地对数据集进行分类的地步。最好的情况是有一个可以在我的控制器文件(default.py)中调用的主表,它与我的数据库中的其他相关(但并不总是需要)表链接。
在下面的代码中,您可以看到我先定义了“category_t”表,然后定义了“new_product”表。然后,我尝试在 new_product 的“main_category”字段中引用“category_t”表。 'main_category' 字段最终成为表单上的多选元素,这正是我想要的。我只需要使用 'category_t' 中的 字段标签 作为多选选项。
我使用的是 Web2py 手册中的 Links to referencing records 说明,但我相信我误解了它的实际功能。我迫切需要有人教我 Web2py 和 SQLite 的法律。
db.define_table(
'category_t',
Field('category1', 'boolean', label='Category 1'),
Field('category2', 'boolean', label='Category 2'),
Field('category3', 'boolean', label='Category 3'),
)
db.define_table(
'new_product',
Field('name', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()], label='Product Name'),
Field('sku', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()], label='SKU'),
Field('build', requires=IS_IN_SET(['Build1','Build2','Build3']), label='Product Type'),
Field('main_category', 'list:reference category_t', label='Category'),
)
更新
我发现它就像在主表中添加辅助表以使其显示在前端一样简单。我还没有检查它是否能够无错误地更新。
db.define_table(
'new_product',
Field('name', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()], label='Product Name'),
Field('sku', requires=[IS_NOT_EMPTY(), IS_ALPHANUMERIC()], label='SKU'),
Field('build', requires=IS_IN_SET(['Build1','Build2','Build3']), label='Product Type'),
db.category_t
)
我还没有弄清楚如何将其显示为多选元素。截至目前,它显示为一系列复选框。
【问题讨论】:
标签: sqlite python-2.7 web2py