1

我有一个页面,它显示过滤后的模型实例列表,并允许用户更新其中的某些字段或将新字段添加为表单。

我很好奇这样做的聪明方法是什么,删除并重新保存所有输入数据或对每个数据进行比较并保存编辑/新字段和实体。

我想提醒您,我使用 postgres 来保存这些值,并且我为此表单显示了大约 20 个条目。

4

1 回答 1

11

QuerySet 对象具有 update() 方法 - 它用于 ie。用于从更改列表批量更新多个选定对象的管理面板。这是django 官方文档中的方法参考。

如何使用它:

只需使用要更新的模型创建查询集(假设 MyModel 具有名为“my_field”的字段):

qs = MyModel.objects.all()
qs.update(my_field=value) 

就是这样 - 请记住 update() 方法不会像 save() 方法那样发送任何信号 - 它只会将查询直接运行到数据库。

至于“通过表单添加字段” - 我不知道我是否做对了?您想添加其他相关模型或动态添加字段到数据库上的模型表吗?

如果要添加相关模型,请使用 InlineFormset ( http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-form ) - 这很容易处理。否则,您必须将字段添加到模型的 _meta 中,如下所述:How dynamic add custom field to model

于 2010-09-23T14:08:59.353 回答