Python 如何在web2py表中设置默认orderby? 虽然我认为这是一个简单的任务,但在使用 SqLFrase时,我找不到一种方法来实现它。假设我有这样一个结构作为例子: db.define_table('month', Field('name', 'string'), format='%(nombre)s' ) db.define_table('foo' Field('bar', 'string'), Field('month', db.month), # I want to sort this by ID format='%(bar)s' ) db.month.update_or_insert(id=1, nombre='January') db.month.update_or_insert(id=2, nombre='Frebruary') # ... db.month.update_or_insert(id=12, nombre='December')

Python 如何在web2py表中设置默认orderby? 虽然我认为这是一个简单的任务,但在使用 SqLFrase时,我找不到一种方法来实现它。假设我有这样一个结构作为例子: db.define_table('month', Field('name', 'string'), format='%(nombre)s' ) db.define_table('foo' Field('bar', 'string'), Field('month', db.month), # I want to sort this by ID format='%(bar)s' ) db.month.update_or_insert(id=1, nombre='January') db.month.update_or_insert(id=2, nombre='Frebruary') # ... db.month.update_or_insert(id=12, nombre='December'),python,forms,web2py,Python,Forms,Web2py,他认为: def example(): form = SQLFORM(db.foo).process() if form.accepted: redirect(URL('default', 'foo')) return dict(form=form) 表单按字母顺序对月份进行排序,这不是期望的行为,我想显示按ID排序的月份。有没有办法在表中设置默认顺序 db.month.orderby = db.month.id # Not working db.mon

他认为:

def example():
    form = SQLFORM(db.foo).process()
    if form.accepted:
        redirect(URL('default', 'foo'))
    return dict(form=form)
表单
按字母顺序对月份进行排序,这不是期望的行为,我想显示按ID排序的月份。有没有办法在表中设置默认顺序

db.month.orderby = db.month.id # Not working
db.month._orderby = db.month.id # Not working

db.foo.month
字段是一个参考字段,默认情况下,它在dbvalidator中获得一个
is\u,从而在表单中生成select小部件。select小部件包括“月”表记录的ID作为值,但由于
db.month
表的“format”属性,它在下拉列表中显示月份名称。默认情况下,下拉列表中的项目最终由格式字符串中指定的字段(在本例中为月份名称)排序。要改变这一点,您可以手动定义验证器并指定“orderby”参数:

db.foo.month.requires = IS_IN_DB(db, 'month.id', db.month._format,
                                 orderby=db.month.id)

db.foo.month
字段是一个参考字段,默认情况下,它在db
validator中获得一个
is\u,从而在表单中生成select小部件。select小部件包括“月”表记录的ID作为值,但由于
db.month
表的“format”属性,它在下拉列表中显示月份名称。默认情况下,下拉列表中的项目最终由格式字符串中指定的字段(在本例中为月份名称)排序。要改变这一点,您可以手动定义验证器并指定“orderby”参数:

db.foo.month.requires = IS_IN_DB(db, 'month.id', db.month._format,
                                 orderby=db.month.id)

db.foo.month
字段是一个参考字段,默认情况下,它在db
validator中获得一个
is\u,从而在表单中生成select小部件。select小部件包括“月”表记录的ID作为值,但由于
db.month
表的“format”属性,它在下拉列表中显示月份名称。默认情况下,下拉列表中的项目最终由格式字符串中指定的字段(在本例中为月份名称)排序。要改变这一点,您可以手动定义验证器并指定“orderby”参数:

db.foo.month.requires = IS_IN_DB(db, 'month.id', db.month._format,
                                 orderby=db.month.id)

db.foo.month
字段是一个参考字段,默认情况下,它在db
validator中获得一个
is\u,从而在表单中生成select小部件。select小部件包括“月”表记录的ID作为值,但由于
db.month
表的“format”属性,它在下拉列表中显示月份名称。默认情况下,下拉列表中的项目最终由格式字符串中指定的字段(在本例中为月份名称)排序。要改变这一点,您可以手动定义验证器并指定“orderby”参数:

db.foo.month.requires = IS_IN_DB(db, 'month.id', db.month._format,
                                 orderby=db.month.id)

非常感谢你@Anthony!Solved这可能不是问这个问题的最佳地方,但如果month有一个外键,而我想根据它的某个字段进行排序,该怎么办?比如说
orderby=db.month.foobar\u id.name
或类似的名称?在这种情况下,您可能需要手动构建一组值和标签,而不是使用
IS\u In\u set
验证器。非常感谢@Anthony!Solved这可能不是问这个问题的最佳地方,但如果month有一个外键,而我想根据它的某个字段进行排序,该怎么办?比如说
orderby=db.month.foobar\u id.name
或类似的名称?在这种情况下,您可能需要手动构建一组值和标签,而不是使用
IS\u In\u set
验证器。非常感谢@Anthony!Solved这可能不是问这个问题的最佳地方,但如果month有一个外键,而我想根据它的某个字段进行排序,该怎么办?比如说
orderby=db.month.foobar\u id.name
或类似的名称?在这种情况下,您可能需要手动构建一组值和标签,而不是使用
IS\u In\u set
验证器。非常感谢@Anthony!Solved这可能不是问这个问题的最佳地方,但如果month有一个外键,而我想根据它的某个字段进行排序,该怎么办?比如说
orderby=db.month.foobar\u id.name
或类似的名称?在这种情况下,您可能需要手动构建一组值和标签,而不是使用
IS\u In\u set
验证器。