首页 > 解决方案 > 我可以轻松地在 Django 中直接进行数据库更新吗?

问题描述

我正在尝试编写一个 Web 应用程序,将数据库的内容显示为网站,例如以表格的形式,并让用户更新表格条目,这些条目应该自动反映在数据库中,以便在页面重新加载时,表格看起来与用户离开时完全一样。

由于我的 Web 开发技能已经过时,我想以此为借口尝试一些新东西。我非常了解 SQL 和 Python,所以我认为 Django 会是一个不错的选择。但是,我在 Javascript 方面没有很多经验。我已经完成了本教程,其中涵盖了经典的 HTML 表单,您可以在其中输入一堆数据,然后点击“提交”以推送到数据库。

我真正希望的是让我的整个表格可以自由编辑,或者立即将任何更改保存到数据库中(例如,每当我单击复选框或“聚焦”文本框时)。作为第二种选择,我考虑为整个页面设置一个“保存”按钮(可能很容易有几个屏幕大小)。

现在,对于第一个选项,我假设我可能不得不使用 Javascript 和 Ajax 技术,我对它们还不太熟悉,因此我目前不太热衷于编写更多的 Javascript 代码。

对于第二个选项,我可能会让我的整个表格成为一个巨大的、带有单个提交按钮的单一表单。我对此有点警惕,因为它对我来说似乎不是很强大。

所以我的问题归结为:有没有办法以一种强大而简单的方式完成我想要的,而不必重新发明轮子?据我了解,Django 不涵盖 HTML 的最终呈现,它只提供数据,所以我认为我需要一些第三方技术来处理那部分?

标签: djangodjango-forms

解决方案


是的,对于您的第二个想法,一次提交整个表,Django 有一个称为 a 的东西ModelFormSet,您可以在其中定义一个 Web 表单,该表单对表中的每一行(或者,对于您选择的记录集)重复。你需要了解很多基本的东西才能做到这一点......例如。如何创建 Django 视图,如何设置 url,如何编写模板……但你说你想学习 Django……所以……这是一个很好的练习。Django 文档有一个很好的教程,可以引导您开发一个基本的工作应用程序,并且从那里开始做您正在寻找的事情并不多。

这是讨论ModelFormSets 的 Django 文档的一部分: https ://docs.djangoproject.com/en/3.0/topics/forms/modelforms/#model-formsets

顺便说一句,Django 会检测哪些行已更改,因此即使您已全部提交,它也不会每次都写入每一行。


推荐阅读