这是模型 x.py:
# coding: utf8
db.define_table('dept',
Field('name',unique=True,label='Department Name'))
db.define_table('course',
Field('dept_id','reference dept'),
Field('name',unique=True,label='Course Name'))
这是 Controller x.py:
# create a new department:
def create_dept():
form = SQLFORM(db.dept).process(next=URL('show_dept'))
return dict(form=form)
# list all departments
def show_dept():
rows = db().select(db.dept.ALL)
return dict(rows=rows)
# create new course:
def create_course():
form = SQLFORM(db.course).process(next=URL('show_all_course'))
return dict(form=form)
# list all courses
def show_all_course():
rows = db().select(db.course.ALL)
return dict(rows=rows)
现在这是 x/create_course 的 View :
{{extend 'layout.html'}}
<h1>This is the x/create_course.html template</h1>
<h2>
Enter the name of the course you want to create
</h2>
{{=form}}
现在我的问题是 -> 当我创建新类(class)时,我必须自己填写部门 ID,如何将其设置为显示部门名称的下拉列表,然后选择一个部门名称并输入新类(class)名称并按提交,它会在该部门创建一门新类(class)。
最佳答案
db.define_table('dept',
Field('name',unique=True,label='Department Name'),
format='%(name)s')
如果您为 db.dept 表提供“格式”属性(如上所述),则引用它的任何字段都将获得默认的 IS_IN_DB
验证器,该验证器将生成一个包含值的下拉列表基于“format”属性(引用字段也会根据“format”属性获得默认的“represent”属性)。
关于python - 如何在表单中放置带有下拉列表的字段名称而不是其引用 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20693252/