2010-05-12 84 views
0

我有一个好的数据库设计实践的问题,我想利用你们的指针。该项目开始很简单。Django数据库设计 - 这是一个很好的覆盖默认设置

嘿,我们有一大堆的我们要回答的每一个项目,该项目变成了问题(没有问题

...

嘿,我们有这么多的问题都可以我们将它们分组(y我们可以做到这一点

导致成..

我们能确定权重的问题,我真的不希望其中的一些问题进行项目(是的,但我们越来越难以

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

要求

因此,有要求 - 对于项目

  • 的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. 当我开始一个项目 - 任何想法 如何“填入预先” thequestions(和最终是项目的 权重)?这不是如何加载问题。为此,我们有json。我想 知道如何将模板问题“复制”到项目 ?
  2. 有没有一个 一般接受的方法做 这个过程,我失踪了? 基本上这个想法你参考 这个问题覆盖了你自己的默认权重 ,并且存储了 答案?
  3. 看来这个工作的一个好夹头 将在 视图中完成,并且需要在那里发生很多检查 ?那 行吗?

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

感谢

回答

-1
  1. Django - Providing Initial Data
  2. 不知道你问这里
  3. 我要说的是,它的确定有一个逻辑视图,因为它涉及到的数据是如何呈现的,不一定如何处理或验证。
1

这是我会尽可能表:

问题表(这包括对问题的默认权重) 项目表(定义项目的细节) ProjectQuestions(有专案编号和问题和新的重量值(最初用默认的wireght填充,但管理员可以改变它)。

当然,你也可以做一些类似的部分 你需要链接表,因为你不想要更改默认权重以更改已完成的专业版因为你希望项目可以改变重量。

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

+0

同意!这是我的问题 - 你如何使用ORM做这种连接。超 – rh0dium 2010-05-12 18:50:49