python - Django 最佳实践 - 表单处理逻辑(用于创建/更新模型)应该放在哪里

标签 python django

我正在尝试让我的 Django 应用程序遵循比目前更好的做法。我经常听说胖模型和瘦 Controller (在最初将我的大部分显示逻辑放在 views.py 中之后)。

无论如何,假设我有一个中等复杂的表单,用于创建新对象,包括新对象的外键。假设没有验证错误,创建/链接模型的逻辑应该放在哪里? is_valid() 之后的 views.py 似乎是最容易放置的地方,但我不确定这是否被认为是最佳实践。

最佳答案

在问题标题中,您将其描述为“表单处理逻辑”,但从您的问题文本听起来,您的意思确实是模型间业务逻辑。

如果是表单处理逻辑(清理等),那应该放在表单上。

因为这听起来像是在谈论业务逻辑,所以通常应该将其作为模型方法 ( Django docs on model methods ) 添加到适当的模型中,然后从自定义表单逻辑中调用(例如,在 save ) 或来自 View 。

当然,代码所在的位置在很大程度上取决于模型之间的关系结构。假设您有一个与书籍模型具有一对多关系的作者模型。作者模型可能有一个方法可以帮助您创建一个新的书籍对象,同时填充外键关系。更复杂的关系可能需要更多的 View 代码,或者至少需要更多的思考。

是的,一般来说,尝试让您的 View 更 slim ,让您的模型更胖是个好主意。

关于python - Django 最佳实践 - 表单处理逻辑(用于创建/更新模型)应该放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22306051/

相关文章:

python - 如何调用函数: def(dot) and def(dice) from def(main)?

python - Windows 上的 Matplotlib - 依赖关系未解决

python - 为什么我可以调用类中未显式定义的所有这些方法?

python - 如何将本地存储的图像分配给 ImageField 字段并在 Django 中返回其 URL?

python - Django - javascript 中的模板标签 "with"

html - 在 django 服务器中运行时 html 模板的 css 问题

python - 如何使用 django 在多模型中进行搜索

python - 收到错误 : unable to load cross rule (invalid rule type or file does not exist)

django - docker为Django设置gdal

python - 向 pandas 数据框添加方法