构建 Django 应用程序

Structuring Django application

我目前正在设计一个供研究人员用来进行评论的网络应用程序。在此应用程序中有两组用户 - 参与者和管理员。

只有管理员可以开始审核,并且可以指定任何用户或管理员作为管理员或筛选者参与审核。每次审核的一般工作流程为:

  1. 搜索医学数据库并导入数千条参考文献。
  2. 基于标题的屏幕引用(reviewers/admins 屏幕的数量可以是 1 个或多个)。每个审稿人将筛选所有参考文献。将每个参考标记为包含或排除。
  3. 屏幕包含基于摘要的参考文献。同上适用。
  4. 来源 full-text 为 PDF 并存储以供参考。
  5. 屏幕包括基于全文的参考。同上适用。
  6. 创建自定义表单。
  7. 从包含的参考文献中提取数据。
  8. 导出数据

在整个审查过程中,将完成对所有参考资料的机器学习。我们还需要在整个审查过程中进行全面的日志记录。

我的问题是,如何最好地将这些部分拆分为 Django 应用程序以及我应该如何构建所需的数据库。

暂时,我考虑过拥有这些数据库:

我不知道如何处理日志记录。我该怎么做?

这是一个明智的拆分吗?如果是这样,我应该如何将这些步骤相应地拆分为应用程序。

Django 最好的地方是 apps,您可以使用 manage.py startapp <myapp> 创建。应用程序可以很好地控制模块化代码。您在模块化代码方面走在正确的轨道上。

关于您的表格,用户、项目和参考,从您的解释来看是合理的。

如果我是你,我会将应用构建成这样。

apps/ 
    userprofile/ (users table )
    project/ (projects and references tables)
    activity/ (activity and notifications tables)

关于日志记录 每个 activity 用户编辑、项目编辑或删除都可以通过 post_ 或 pre_ 信号 https://docs.djangoproject.com/en/1.10/topics/signals/ 捕获。使用它们创建一个 activity 并基于 activity 您可以将单个 activity 作为通知发布给多个用户,即单个 activity 将触发每个通知给多个参加活动的用户。

在每个应用程序中

我更喜欢在每个应用程序中使用以下结构:

userprofile/         
    __init__
    views.py
    tests.py
    signals.py # write the post_save pre_save post_delete pre_delete logics here
    managers.py  # take full leverage of managers, and custom querysets
    forms.py
    models.py
    urls.py
    admin.py
    tasks.py # for celery or tasks which will be used by queuing systems
    apps.py 

关于版本数据

从这里尝试适合您要求的那个 https://djangopackages.org/grids/g/model-audit/