python - 如何在表单中放置带有下拉列表的字段名称而不是其引用 ID?

标签 python web2py

这是模型 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/

相关文章:

python - 如何确保每个数字的所有组合都在Python中的整数组合递归中给出?

python - 运行 python3 manage.py migrate 时 Virtualenv(Pyt​​hon3.5/pip3/Django2.0/psycopg2) 出错

python - 使用 web2py 返回上传目录中的文件 - 字符串问题

python - Python中抽象类和接口(interface)的区别

python - 匹配多列并添加到数据框

python - 如何使用 Windows 批处理文件获取 Python 位置?

mysql - 无法在 web2py 中创建新数据库...语法错误

python - Web2Py - 配置调度程序

python - web2py - 设置我自己的环境

python - 使用 html5 运行 python 代码