【问题标题】:Django Database design -- Is this a good stragety for overriding defaultsDjango 数据库设计——这是覆盖默认值的好策略吗
【发布时间】:2023-03-10 05:32:01
【问题描述】:

我有一个关于良好数据库设计实践的问题,我想请你们指点一下。该项目一开始很简单。

嘿,对于每个项目,我们都有一堆问题想要回答(没问题

变成了……

嘿,我们有这么多问题,我们可以将它们分成几个部分(是的,我们可以这样做

哪个导致..

我们可以权衡这些问题吗?我真的不想为我的项目提出这些问题(是的,但我们越来越难了

然后我想他们会希望每个部分都有自己的重量..

要求

所以有要求 - 对于 n 个项目

  • 允许管理员成员为项目选择问题
  • 允许管理员重新称重或使用问题的默认权重
  • 允许管理员重新加权部分
  • 让团队成员回答问题。

所以这就是我想出的。 请随时发表评论并提供更好的示例

models.py

from django.db import models
from django.contrib.sites.models import Site
from django.conf import settings

class Section(models.Model):
    """
        This describes the various sections for a checklist:
    """    
    name = models.CharField(max_length=64)
    description = models.TextField()

class Question(models.Model):
    """
        This simply provides a simple way to list out the questions.
    """    
    question = models.CharField(max_length=255)
    answer_type = models.CharField(max_length=16)
    description = models.TextField()
    section = models.ForeignKey(Section)    

class ProjectQuestion(models.Model):
    """
        These are the questions relevant to the project
    """
    question = models.ForeignKey(Question)
    answer = models.CharField(max_length=255)
    required = models.BooleanField(default=True)
    weight = models.FloatField(default = XXX)

class Project(models.Model):
    """
        Here is where we want to gather our questions
    """
    questions = models.ManyToManyField(ProjectQuestion)

即刻提问:

  1. 当我开始一个项目时 - 任何想法 关于如何“预填充” 问题(最终 权重)为项目?这不是如何 加载问题。为此,我们有 json。我想 知道如何将模板问题“复制”到 项目?
  2. 有没有 普遍接受的做事方法 我缺少的这个过程? 基本上你所指的想法 这些问题超越了你自己 默认重量,并存储 回答?
  3. 看起来不错的夹头 的工作将在 意见和大量的检查 需要在那里发生吗?就是它 好吗?

再次 - 随时给我更好的策略!

谢谢

【问题讨论】:

    标签: database django data-structures django-models


    【解决方案1】:

    这就是我想要的表格:

    问题表(这将包括问题的默认权重) 项目表(定义项目的详细信息) ProjectQuestions(具有 projectid 和 questionid 以及新的权重值(最初填充了默认的 wireght,但管理员可以更改它。)

    当然,您也可以对这些部分做一些类似的事情。 您需要链接表,因为您不希望更改默认权重来更改已完成的项目,并且因为您希望权重可以按项目更改。

    至于如何使用 django 做到这一点,这让我很不爽,因为我永远不会使用 ORM 设计数据库。

    【讨论】:

    • 同意!!那是我的问题——你如何使用 ORM 进行这种链接。!!超级
    【解决方案2】:
    1. Django - Providing Initial Data
    2. 不知道你在这里问什么
    3. 我想说,在视图中包含该逻辑是可以的,因为它与数据的呈现方式有关,而不一定是如何处理或验证数据。

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 1970-01-01
      • 2016-12-22
      • 2011-05-21
      • 1970-01-01
      • 2010-09-24
      • 2021-10-15
      • 2011-12-20
      相关资源
      最近更新 更多