【发布时间】:2018-10-20 23:49:17
【问题描述】:
我正在通过 Django 构建一个大型、复杂的表单系统。它比我构建的任何表单都复杂,而且我有一些数据库设计背景,但对 Django 没有太多经验。
假设有大约 500 个可能的问题和 6 种不同的表单类型。大约 75% 的问题对所有 6 种表格都是通用的,但其余的以各种不同的、有些重叠的组合出现在表格的 1-5 中(例如,问题 20 出现在表格 A、B 和 D 上,但问题 21 出现在在表格 B、C 和 D)上。
到目前为止,我想出的可能解决方案是:
1) 有一个包含所有常见问题的模型,然后为每个表单类型(A、B、C、D、E、F)创建一个单独的模型,该模型继承了常见问题,然后添加了每个不存在的内容常见的。这样做的缺点是某些字段上的表单类型之间存在冗余(那些出现在多个表单上的问题)。
2) 为所有 500 个问题提供一个表格/模型,然后将每种表格类型链接到一个中间表格,该表格列出了哪些问题适用于哪种表格类型。这似乎很容易用原始 SQL/on paper 来完成,但我不知道如何让它在 Django 中工作。如果FormAModel 有一个带有AllQuestionsModel 的ManyToMany 字段,它不能以这种方式选择性地只抓取适用于Form A 的问题,可以吗?
编辑:我意识到这与 Django 用户权限非常相似(用户有角色,角色属于不同的用户),但是 Django 已经构建了如何为不同的用户分配不同的权限以使其设置更快。我该如何将这个想法复制到一组不同的模型中?
【问题讨论】:
标签: django database-design django-models django-forms