2010-05-12 90 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