从web2py中的控制器更新记录

时间:2015-05-04 16:24:47

标签: mysql model-view-controller web2py

我想更新数据库表单控制器记录中的某个字段,因为我知道哪个记录是哪个字段,是哪个字段。我该怎么做?

例如:在表格中'学生'在数据库中有一个称为性别的字段,它是“男性”和“男性”。或者'女性'。添加了许多记录后,我添加了一个名为' gender_description'的新字段。它应该是' girl'当性别是女性和“男孩”时如果性别是男性。我想自动为所有记录填充这个新字段。我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

在web2py shell中,您可以执行以下操作:

db(db.students.gender == 'male').update(gender_description='boy')
db(db.students.gender == 'female').update(gender_description='girl')

您不希望在应用代码中执行此操作,因为上述操作只能运行一次。另外,请确保" gender_description"字段已添加到模型定义中,并且已运行迁移(只要启用了迁移,这将自动发生。)

注意,如果"性别"之间始终存在一对一的对应关系。和" gender_description",这可能不是最好的数据库设计。

作为替代方案,您可以考虑在web2py中创建virtual field

db.define_table('students',
                Field('gender', ...),
                Field.Virtual('gender_description',
                              lambda r: 'boy' if r.gender == 'male' else 'girl'),
                ...)