我已经编写了用于管理条件插入/更新/删除的代码 “web2py”中单个表单中的多个表。 我同意,代码的形式非常原始,可能不是“pythonic”。 有代码重复。 但至少我还有一些事情要做&打造一个精致的 结构。在
db.define_table('mdlmst',
Field('mdlmstid','id'),
Field('mdlmstcd'),
Field('mdlmstnm'),
migrate=False,
format='%(mdlmstnm)s'
)
db.define_table('wrmst',
Field('wrmstid','id'),
Field('wrmstcd'),
Field('wrmstnm'),
migrate=False,
format='%(wrmstnm)s'
)
db.define_table('extwrmst',
Field('extwrmstid','id'),
Field('extwrmstcd'),
Field('extwrmstnm'),
migrate=False,
format='%(extwrmstnm)s'
)
def modelwar():
models = db(db.mdlmst.mdlmstid>0).select(orderby=db.mdlmst.mdlmstnm)
return dict(models=models)
管理表格-“mdlwr”和“mdlextwr”
def war_edit():
mdl_id = request.args(0)
mdl_nm = request.args(1)
warset = db(db.mdlwr.mdlmstid==mdl_id) # fetch a set
extwarset = db(db.mdlextwr.mdlmstid==mdl_id) # fetch a set
warlist = db(db.mdlwr.mdlmstid==mdl_id).select() # get a ROW object
extwarlist = db(db.mdlextwr.mdlmstid==mdl_id).select() # get a ROW object
form_war=FORM(TABLE(TR("Basic Warranty",
选择(_type=“SELECT”,_name=“baswar”,*[选项(x.wrmstnm,_value=x.wrmstid)
forr x in db()。选择(所有数据库)]),
TR(“延长保修期”,
选择(_type=“SELECT”,_name=“extwar”,*[选项(x.extwrmstnm,_value=x.extwrms-tid)
对于db()中的x。选择(全部数据库)]),
TR(“,输入(_type='submit',\u value='Save'),)))
if len(warlist)>0:
form_war.vars.baswar = warlist[0].wrmstid
if len(extwarlist)>0:
form_war.vars.extwar = extwarlist[0].extwrmstid
if form_war.accepts(request.vars, session):
if len(warlist)>0:
if form_war.vars.baswar==''
warset.delete()
else:
warset.update(wrmstid=form_war.vars.baswar)
else:
db.mdlwr.insert(mdlmstid=mdl_id, wrmstid=form_war.vars.baswar)
if len(extwarlist)>0:
if form_war.vars.extwar=='':
extwarset.delete()
else:
extwarset.update(extwrmstid=form_war.vars.extwar)
else:
db.mdlextwr.insert(mdlmstid=mdl_id, extwrmstid=form_war.vars.extwar)
response.flash = 'Warranty definition saved'
return dict(form_war=form_war,mdlnm=mdl_nm)
{{response.files.append(URL(r=request,c='static',f='jquery.dataTables.min.j
s'))}}
{{response.files.append(URL(r=request,c='static',f='demo_table.css'))}}
{{extend 'layout.html'}}
jQuery(document).ready(function()
{ jQuery('.smarttable').dataTable();});
Modelwise Warranty Master
Model IDModel CodeModel Name
{{for model in models:}}
{{=model.mdlmstid}}
{{=model.mdlmstcd}}
{{=model.mdlmstnm}}
{{=A('edit
warranty',_href=URL('war_edit',args=[model.mdlmstid,model.mdlmstnm]))}}
{{pass}}
告诉我这里有没有什么愚蠢的代码。
我非常欢迎任何改进意见/建议。
谢谢, 维涅特
我觉得你的数据库设计很奇怪。在
在每个表中都有一个“id”类型的字段。这将替换web2py自动生成的id字段-这是个坏主意。在web2py的书中:“不要声明一个名为”id“的字段,因为它是由web2py创建的。默认情况下,每个表都有一个名为“id”的字段。它是一个自动递增的整数字段(从1开始),用于交叉引用和使每个记录唯一,因此“id”是主键“
您在表“mdlmst”和“wrmst”之间创建了多对多关系,在“mdlmst”和“extwrmst”之间创建了另一个多对多关系。虽然这不一定是错的,但我觉得这不太可能是你想要的。在
我觉得你的数据库设计需要工作。在你开始设计表单之前,应该先把它整理好。在
相关问题 更多 >
编程相关推荐