我是一般的Web2py和SQL數據庫的新手,所以如果這是一個愚蠢的問題,請原諒我。使用Web2py/Python在SQLite中引用另一個表格
我想要做的是創建一個窗體,從SQL表字段中提取相關數據(類型,標籤,IS_NOT_EMPTY()等)以在前端填充和配置輸入元素。到目前爲止,我已經成功地使用Web2py Manual作爲一個很好的參考。
我已經到了想要使用多個表來幫助更有效地對數據集進行分類的地步。最好的情況是有一個可以在我的控制器文件(default.py)中調用的主表,它與我的數據庫中的其他相關(但並非總是需要)表相關聯。
在下面的代碼中,您可以看到我先定義'category_t'表,然後定義'new_product'表。然後我嘗試在new_product的'main_category'字段內引用'category_t'表。 'main_category'字段最終成爲窗體上的多重選擇元素,這正是我想要的。我只需要使用'category_t'中的字段標籤作爲多選選項。
我正在使用這個Links to referencing records指令從Web2py手冊,但我相信我誤解了它的實際能力。我迫切需要有人來教我關於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
)
我還沒有想出如何將其顯示爲可多選元素。截至目前,它顯示爲一系列複選框。