2016-05-12 4 views
1

Я хотел бы создать простое приложение, где каждый пользователь будет делать то же обследование 30 вопросов, для каждого вопроса, то он или она будет выбрать Да или НетОтношения между моделями

Как я знаю, 3 вида отношений: «один к одному», «много-к-одному», «многие-ко-многим».

Однако я не знаю, какой путь является наиболее оптимальным для установления отношений.

Вот что я думаю:

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 Пользователь может сделать ТОЛЬКО 1 выбор для каждого Вопроса (один-к-одному)?

(2) 1 Вопрос имеет только 1 выбор (да/нет) ИЛИ 1 Вопрос может быть «Да» для этого пользователя и «Нет» для другого пользователя.

Спасибо!

ответ

0

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

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

Кроме того, может возникнуть вопрос о том, что должно быть ограничение unique_together для полей пользователя и вопроса модели выбора, поскольку для каждого вопроса должен быть только один выбор.

Подробнее о model meta options and unique together.

+0

Спасибо за быстрый ответ. Пожалуйста, простите меня, если мой следующий вопрос слишком невежественен. Насколько я понимаю ваш ответ, Пользователь и вопрос находятся в отношениях «один-ко-многим», потому что у 1 пользователя много объектов Вопроса. Однако я задаюсь вопросом, есть ли способ создать 30 объектов Вопросов и повторно использовать их для многих пользователей. Если это возможно, так что один вопрос может использоваться многими пользователями. В этом случае отношение между пользователем и вопросом будет много-ко-многим? Кроме того, что такое отношения между выбором и вопросом? –

+0

Вы слишком смущены этим, и я не знаю, как сделать его более понятным вам. Всегда есть мнение, когда дело доходит до моделирования данных, но для меня кажется, что вопрос и пользователь не имеют абсолютно никаких отношений, кроме модели Choice, которая показывает, какой выбор Пользователь сделал в отношении Вопроса. Сказав это, есть много способов, которыми вы можете моделировать это, и это сводится к множеству факторов, таких как запросы, которые вы будете использовать и т. Д. Например, вы можете использовать отношения «многие ко многим» с «Выбор», являющиеся сквозной моделью. Если вам нужно, в этом контексте никто не может сказать. – Wtower

+1

Спасибо, Wtower! Я буду читать больше из вариантов метафайлов, которые вы мне дали, и попробуйте свое предложение! Приятный день! –

1

Ваши требования заключается в следующем:

  1. Есть 30 вопросов для многих пользователей на выбор.
  2. Для одного вопроса у пользователя есть два варианта: да или нет.

так

from django.db import models 
class Choice(models.Model): 
    user = models.ForeignKey(User) 
    question = models.ForeignKey(Question) 
    choice = models.BooleanField() 
+0

Спасибо Билл. Он! Приятный день! –

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