У меня вопрос о хороших практиках проектирования баз данных, и я хотел бы использовать вас, ребята, для указателей. Проект начался просто.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)
Непосредственные вопросы:
- Когда я начинаю проект - любые идеи о том, как «предварительно заполнить» thequestions (и в конечном итоге весы ) для проекта? Это не так, как загружать вопросы. Для этого у нас есть json. Я хочу знать, как «скопировать» вопросы шаблона в проект?
- Есть ли общепринятый способ для выполнения этот процесс, который мне не хватает? В основном идея, о которой вы говорите, вопросы обходят ваши собственные по умолчанию вес, и хранить ответ?
- Похоже, что хороший патрон работы будет выполнен в виде и что там будет много проверок ? Это OK?
Снова - не стесняйтесь давать мне лучшие стратегии!
Благодаря
Согласен! Это мой вопрос - как вы это связываете, используя ORM. !! Супер – rh0dium