2010-05-12 2 views
0

У меня вопрос о хороших практиках проектирования баз данных, и я хотел бы использовать вас, ребята, для указателей. Проект начался просто.Django Database design - Является ли это хорошей ошибкой для переопределения значений по умолчанию

Эй у нас есть куча вопросов, которые мы хотим отвеченных для каждого проекта (не проблема)

который превратился в ...

Эй у нас есть так много вопросов может мы группируем их в секции (yup, мы можем это сделать)

которые ведут в ..

Можем мы взвешиваем эти вопросы, и я действительно не хочу, чтобы некоторые из этих вопросов для моего проекта (Да, но мы получаем трудно)

И тогда я думаю, они хотят, чтобы каждый раздел имеет свой собственный вес ..

Требования

Таким образом, есть требования - Для п числа проекта

  • Разрешить член админ возможности выбора вопросов для проекта
  • Разрешить элемент администратора повторно взвешивает или использовать веса по умолчанию для вопросов
  • Разрешить члену администратора повторно весовать разделы
  • Позвольте членам команды ответить на вопросы.

Итак, вот что я придумал. Пожалуйста, не стесняйтесь комментировать и предоставить лучшие примеры

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. Похоже, что хороший патрон работы будет выполнен в виде и что там будет много проверок ? Это OK?

Снова - не стесняйтесь давать мне лучшие стратегии!

Благодаря

ответ

-1
  1. Django - Providing Initial Data
  2. Не уверен, что вы просите здесь
  3. Я бы сказал, что это нормально, чтобы иметь эту логику с точки зрения, как она относится к тому, как представлено данных, не обязательно как он обрабатывается или проверяется.
1

Это то, что я бы так далеко, как таблицы:

Вопросы таблиц (это включает в себя вес по умолчанию для вопроса) таблица Project (определяет детали проекта) ProjectQuestions (имеет ProjectID и вопрос и новое значение веса (изначально заселенное проводником по умолчанию, но администратор может его изменить).

Вам нужен ссылочный стол, потому что вы не хотите изменение веса по умолчанию для изменения уже завершено и вы хотите, чтобы вес был изменен по проекту.

Что касается того, как это сделать, используя django, меня превосходит, поскольку я никогда не буду создавать базу данных с использованием ORM.

+0

Согласен! Это мой вопрос - как вы это связываете, используя ORM. !! Супер – rh0dium

 Смежные вопросы

  • Нет связанных вопросов^_^