模型之间的关系

时间:2016-05-12 05:16:45

标签: django database

我想设计一个简单的应用程序,每个用户将对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个问题对于该用户可以是“是”而对另一个用户可以是“否”。

谢谢!

2 个答案:

答案 0 :(得分:1)

您的要求如下:

  1. 有30个问题供很多用户选择。
  2. 对于一个问题,用户有两个选择,是或否。
  3. 所以

    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约束,因为每个问题每个用户应该只有一个选择。

更多关于model meta options and unique together