![]() |
1
2
我在S.Lott的帖子上评论说,我觉得他的回答是最好的。他是对的:如果目的只是为了避免两次数据库命中,那么你只会陷入一个不必要的痛苦世界。
但是,如果您正在阅读您对ModelForm的引用,而不是寻找一个允许您以某种方式推迟正式保存的解决方案,那么您可能希望了解
尽管如此,回到S.lott的文章中,模型表单和实际模型的情况有所不同。因为表单只公开要在浏览器中编辑的“安全”数据集(“安全”是因为它以某种方式被过滤,或者排除了用户不应该编辑的关键字段),所以合理的设计期望是,在保存之前,可能需要向表单派生模型中添加重要信息。这就是为什么Django有
这种期望在您直接实例化模型的情况下会下降。在这里,您有对模型API的编程访问权,因此您可能会发现直接使用该API比通过通用间接寻址更容易维护,更不容易出错。我可以理解为什么你在想象工厂的概念,但是在这种情况下,你可能会发现为各种模型创建防弹通用化的努力是一个复杂的问题,不值得这样做。 |
![]() |
2
3
“据我所知,任何具有多对多字段的对象插入都需要两次数据库命中,…” 那又怎么样? 对每个单独的数据库访问进行微观管理通常是不值得考虑的。做最简单、最明显的事情,以便Django可以为您优化缓存。 您的应用程序性能通常由缓慢下载到浏览器,以及页面中的所有jpeg、css和其他静态内容控制。 花在大脑抽筋上的时间思考如何在不进行两次数据库访问的情况下生成两个主键(对于多对多关系而言)是不划算的。两个pk通常是两个数据库访问。 编辑 “…出错时丢弃数据库…”
Django有交易。见
http://docs.djangoproject.com/en/dev/topics/db/transactions/#managing-database-transactions
. 使用
“强制稍后进行验证” 没有意义——更新你的问题来解释这一点。 |
![]() |
Patrick Bond · 如何将模型中的函数结果添加到列表中? 5 月前 |
![]() |
bur · 每次从模板调用方法都会查询数据库吗? 6 月前 |
|
Stefan · 在子目录中设置Django 6 月前 |
![]() |
vale383 · 如何在Django端点中查找user_id 6 月前 |
![]() |
Kovy Jacob · Django在动态URL段中添加斜线 6 月前 |
![]() |
user987 · 如何在Django中访问提交的表单请求数据 6 月前 |
![]() |
user24242514 · 将嵌套查询字符串请求转换为字典 7 月前 |