2016-08-17 10 views
0

Я собираю сайт Django, используя MySQL. К сожалению, я не могу понять, как объединить мою схему.Django несколько внешних ключей для ссылки на одну и ту же таблицу несколько раз?

У меня есть таблица Users, таблица Tasks и таблица сеансов.

Каждый пользователь может одновременно иметь 3 активные задачи. Каждый пользователь может обновить (установить, завершить, пропустить или сохранить) эти три задачи на рабочий сеанс. Если пользователь выполнит задачу (т. Е. Имеет менее трех открытых задач), то в следующий раз, когда они создадут сеанс, им будет предоставлена ​​возможность создать новую задачу. Эта последняя часть достаточно проста для кодирования, это логика, лежащая в основе схемы таблицы, которая вызывает у меня проблемы.

Моя проблема в том, что я не знаю, как правильно это моделировать. Сначала я подумал о включении 3 отдельных столбцов в таблицу сеанса с внешними ключами, указывающими на таблицу задач. Однако из того, что я читаю, не похоже, что я могу добавить 3 внешних ключа, ссылающихся на разные экземпляры одной и той же таблицы. В качестве альтернативы, я думал о создании таблицы «много-ко-многим» между сеансом и задачей. Однако, нужно ли мне затем создавать три записи таблицы за каждый открытый сеанс? Кажется, что он может быстро выйти из-под контроля, а также просто кажется неаккуратным для меня.

Я, честно говоря, полностью потеряю, как смоделировать это. Я бы очень признателен за любую помощь или вклад.

Спасибо

+2

«* Это не выглядит, как я могу добавить 3 внешние ключи все ссылающихся разные экземпляры одного и того же стола *». Что вы можете. Что вы пробовали? – solarissmoke

+0

Я буду честным здесь: я не был. Я позволил себе заблудиться в море документации и все, но убедил себя, что это решение не сработает. Глупый из меня ... Спасибо за проверку реальности! – Neighlyd

ответ

0

Что-то вроде этого

class Task(models.Model): 
    name = models.CharField(max_length=50) 

class MyUser(models.Model): 
    user = models.OneToOneField(User) 
    task_1 = models.ForeignKey(Task) 
    task_2 = models.ForeignKey(Task) 
    task_3 = models.ForeignKey(Task) 
+0

Спасибо! Как я сказал @solarissmoke выше, я думаю, что позволил себе слишком запутаться в документации, что я не совсем понял. Спасибо за уточнение. Я очень ценю это. – Neighlyd

+0

Быстрое обновление. Я пробовал этот метод, но это не сработало, пока я не установил поле «related_name» для каждого из внешних внешних ключей задачи. "task_1 = models.ForeignKey (Task, related_name =" task_one ")" – Neighlyd

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

  • Нет связанных вопросов^_^