Database Django数据库设计——这是覆盖默认值的好策略吗
我有一个关于良好的数据库设计实践的问题,我想利用你们来提供一些建议。这个项目一开始很简单 嘿,我们每个项目都有一大堆问题需要回答(没问题) 变成了 嘿,我们有这么多问题,我们能把它们分成几个部分吗(是的,我们能做到) 这导致了 我们能权衡一下这些问题吗?我真的不想在我的项目中遇到这些问题(是的,但我们越来越难了) 然后我想他们会希望每个部分都有自己的重量 要求Database Django数据库设计——这是覆盖默认值的好策略吗,database,django,data-structures,django-models,Database,Django,Data Structures,Django Models,我有一个关于良好的数据库设计实践的问题,我想利用你们来提供一些建议。这个项目一开始很简单 嘿,我们每个项目都有一大堆问题需要回答(没问题) 变成了 嘿,我们有这么多问题,我们能把它们分成几个部分吗(是的,我们能做到) 这导致了 我们能权衡一下这些问题吗?我真的不想在我的项目中遇到这些问题(是的,但我们越来越难了) 然后我想他们会希望每个部分都有自己的重量 要求 models.py from django.db import models from django.contrib.sites.mo
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)
这就是对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)
即时问题:
就表格而言,这是我想要的: 问题表(这将包括问题的默认权重) 项目表(定义项目的详细信息) ProjectQuestions(具有projectid和questionid以及新的权重值(最初使用默认的Wiright填充,但管理员可以更改。) 当然,你也可以对这些部分做一些类似的事情。 您需要链接表,因为您不希望更改默认权重来更改已完成的项目,因为您希望权重可以按项目更改
至于如何使用django做到这一点,这比我强,因为我永远不会使用ORM设计数据库。同意!!这是我的问题-如何使用ORM进行链接。!!超级