我的 Django 应用程序在表格 View 中显示数据库中的对象。问题是这些对象(模型)非常复杂:有 50 多个字段。几乎每个字段我都必须做一些格式化:
- 将电话号码从 int 71234567689 转换为“+7 (123) 456789”
- 显示带有空格的长价格:“7 000 000”而不是“7000000”
- 从“街道”、“房屋”等多个字段构建完整地址(如果逻辑非常复杂,有几个 if-else-s)
- 等等
Django 模板语言有几个对简单情况有用的标签,但我想在一般情况下(比如我的情况)不适合严肃的格式化。
在模型类中创建@property-s 也不是一个选项,因为问题是关于渲染的,与模型无关。
所以我想我应该在 View 中进行转换:为每个对象创建字典,填充转换后的数据并传递给模板。
但是!该模型有很多字段,我不想将它们全部复制 :) 此外,保留模型结构以便在 django 模板(例如,重组)和查询集惰性中使用它会很棒。
所以最好的方法是指导 django “如何渲染”。可能吗?
请您参考如下方法:
如果您正在使用 Django Rest Framework,那么您可以简单地使用 serializers。但我认为情况并非如此。您想要完成的任务似乎与 django forms 的角色非常相似,但因此它们仅(通常)用于保存/更新模型,即 POST 请求。现在,您可以定义一个新类来过滤/呈现并在您的 View 中使用它,或者继续使用 django 表单,它会自动为不同的字段提供基本清理。
