Как сделать структуру типа файловой системы на БД?
От: Basil2 Россия https://starostin.msk.ru
Дата: 19.01.15 08:07
Оценка:

Задача решена, спасибо.



Задача:
Делаю обучающую программу. Есть сущность — "упражнение". Нужна сущность "курс", которая может включать в себя как упражнения, так и другие курсы. При этом одно и тоже упражение (курс) может входить в несколько курсов.

Вопрос 1:
Какой для этого должна быть структура таблиц и их связи?

Вопрос 2:
Как это реализовать в Python/Django?

Я попробовал сделать так:
class Exercise(models.Model) ...

class Course(models.Model):
    exercises = models.ManyToManyField(Exercise)
    courses = models.ManyToManyField(Course)

Проблема в том, что Course еще не виден из Course. В C++ например можно использовать указатель на класс внутри создаваемого класса, а как это сделать в Питоне я ума не приложу Вводить же 3-ю сущность не хочется...
Проект Ребенок8020 — пошаговый гайд как сделать, вырастить и воспитать ребенка.
Отредактировано 19.01.2015 11:26 Basil2 . Предыдущая версия .
Re: Как сделать структуру типа файловой системы на БД?
От: Qulac Россия  
Дата: 19.01.15 09:48
Оценка: 4 (1)
Здравствуйте, Basil2, Вы писали:

B>Задача:

B>Делаю обучающую программу. Есть сущность — "упражнение". Нужна сущность "курс", которая может включать в себя как упражнения, так и другие курсы. При этом одно и тоже упражение (курс) может входить в несколько курсов.

B>Вопрос 1:

B>Какой для этого должна быть структура таблиц и их связи?

B>Вопрос 2:

B>Как это реализовать в Python/Django?

B>Я попробовал сделать так:

B>
B>class Exercise(models.Model) ...

B>class Course(models.Model):
B>    exercises = models.ManyToManyField(Exercise)
B>    courses = models.ManyToManyField(Course)
B>

B>Проблема в том, что Course еще не виден из Course. В C++ например можно использовать указатель на класс внутри создаваемого класса, а как это сделать в Питоне я ума не приложу Вводить же 3-ю сущность не хочется...

В БД двумя таблицами обойтись можно. Одна Course с отношением один ко многим на саму себя, вторая Exercise c внешним ключом на таблицу Course.
Программа – это мысли спрессованные в код
Re: Как сделать структуру типа файловой системы на БД?
От: andyag  
Дата: 19.01.15 10:59
Оценка: 4 (1)
Здравствуйте, Basil2, Вы писали:

B>Вопрос 2:

B>Как это реализовать в Python/Django?

Первая ссылка по запросу "django self referential foreign key": http://stackoverflow.com/questions/15285626/django-self-referential-foreign-key

ИМХО, для этого раздела форума — оффтопик.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.