我想设计一个简单的应用程序,每个用户将对30个问题进行相同的调查,对于每个问题,他或她将选择是或否。
据我所知,有三种关系:一对一,多对一,多对多。
但是,我不知道哪种方式最适合设置关系。
以下是我的想法:
User:
+ id (PK)
+ name
Question:
+ id (PK)
+ content
Choice:
+ user (Foreign Key) //Many-To-One or One-To-One ? (1)
+ question (Foreign Key) //Many-To-One or One-To-One ? (2)
我被困在这里因为我不确定是否:
(1) 1用户可以做出多种选择(多对一)或1用户每个问题只能做一个选择(一对一)?
(2) 1问题只有1个选择(是/否)或1个问题对于该用户可以是“是”而对另一个用户可以是“否”。
谢谢!
答案 0 :(得分:1)
您的要求如下:
所以
from django.db import models
class Choice(models.Model):
user = models.ForeignKey(User)
question = models.ForeignKey(Question)
choice = models.BooleanField()
答案 1 :(得分:0)
User和Choice之间的关系很简单,因为一个用户可以为很多问题做出很多选择。
出于同样的原因,用户和问题之间的关系也是如此。
此外,可能正在缓冲的事实是Choice模型的用户和问题字段都应该有unique_together
约束,因为每个问题每个用户应该只有一个选择。