我有一个页面,它显示过滤后的模型实例列表,并允许用户更新其中的某些字段或将新字段添加为表单。
我很好奇执行此操作的聪明方法是什么,删除并重新保存所有输入数据或对每个数据进行比较并保存已编辑/新字段和实体。
我想提醒您,我使用 postgres 来保存这些值,并为此表单显示大约 20 个条目。
最佳答案
QuerySet 对象有 update() 方法——它在 ie 中使用。用于从更改列表中批量更新多个选定对象的管理面板。这是方法引用 django's official documentation .
使用方法:
只需使用您要更新的模型创建查询集(假设 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 .
关于database - Django:更新X数量模型的形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3778585/