Django:更新 X 数量模型的表单

Posted

技术标签:

【中文标题】Django:更新 X 数量模型的表单【英文标题】:Django: form that updates X amount of models 【发布时间】:2011-04-16 06:26:31 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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。

【讨论】:

以上是关于Django:更新 X 数量模型的表单的主要内容,如果未能解决你的问题,请参考以下文章

Django 表单:为继承模型组织创建/更新表单的最 DRY 方式

Django 模型表单不更新数据库记录

Python (DJango) - 同时更新多行模型

Django:使用视图和表单复制模型对象

如何预填充 Django 更新表单并将其写回数据库

Django模型表单对象的自动创建日期?