我想更新数据库表单控制器记录中的某些字段,因为我知道那条记录是哪条记录,我该怎么做?
例如:在数据库的“学生”表中,有一个名为“性别”的字段,该字段可以是“男性”或“女性”。添加许多记录后,我添加了一个新字段,名为“ gender_description”。性别时应为“ girl”是女性,如果是男性则是“男孩”。我想自动为所有记录填充此新字段。如何实现此目的?
最佳答案
在web2py shell中,您可以执行以下操作:
db(db.students.gender == 'male').update(gender_description='boy')
db(db.students.gender == 'female').update(gender_description='girl')
您不希望在应用程序代码中执行此操作,因为上述操作只能运行一次。另外,请确保已将“ gender_description”字段添加到模型定义中,并且已运行迁移(只要启用了迁移,此操作就会自动发生)。
注意,如果“ gender”和“ gender_description”之间始终存在一对一的对应关系,那么这可能不是最佳的数据库设计。
或者,您可以考虑在web2py中创建virtual field:
db.define_table('students',
Field('gender', ...),
Field.Virtual('gender_description',
lambda r: 'boy' if r.gender == 'male' else 'girl'),
...)