Найти - Пользователи
Полная версия: пример Образования
Начало » Django » пример Образования
1
Leon
Всем привет.
Начал писать приложение, для загрузки разного рода содержания на сайт для образования.

Структура следующая: есть “факультет” (Faculty), пример “ЭнергоМаш”
есть “курс лекции” (LectionCourse) - курс может быть как для одного факультета, так и для многих (один и тот же курс может читаться на разных факультетах), пример “Начертательная геометрия”
есть “лекция” (Lection) -те лекции, из которых состоит “курс лекций”. Опять же, одна лекция может входить в разные курсы лекций, пример “Введение в черчение” - эта конкретная лекция может читаться и в другом курсе лекций, к примеру “Черчение 3D деталей” на каком нить другом факультете.
И само содержание лекций - “Text”,
“Picture”,
“Video”,
“Audio”… Так же, каждый отдельный объект содержания может входить во множества лекций. Т.е. структура многие-ко-многим в кубе.

Привожу пример моего файла models.py
Если есть у кого какие замечания, предложения и критика, советы, напишите - не запутался ли я?

class Text(models.Model):
title = models.CharField(max_length = 150)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True, blank=True)
modules = models.ManyToManyField(Lection)

class Picture(models.Model):
title = models.CharField(max_length=100)
image = ImageField(upload_to='pictures')
caption = models.CharField(max_length=250, blank=True)
modules = models.ManyToManyFieldLection)

class Video(models.Model):
title = models.CharField(max_length=50)
file = models.FileField(upload_to='content/video')
timestamp = models.DateTimeField(auto_now_add=True, blank=True)
modules = models.ManyToManyField(Lection)

class Audio(models.Model):
title = models.CharField(max_length=50)
file = models.FileField(upload_to='content/sound')
timestamp = models.DateTimeField(auto_now_add=True, blank=True)
modules = models.ManyToManyField(Lection)

class Lection(models.Model):
title = models.CharField(max_length=50)
courses = models.ManyToManyField(LectionCourse)

class LectionCourse(models.Model):
TYPE_COURSE = (
(0, 'techical'),
(1, 'humanist'),
)

title = models.CharField(max_length=50)
type = models.IntegerField(max_length=20, choices=TYPE_COURSE, default=0)
facultet = models.ManyToManyField(Faculty)

class Faculty(models.Model):
TYPE_CHOICES = (
(0, 'FinancialEconomicManagement'),
(1, 'EnergoMash'),
(2, 'PhysMech'),
(3, 'RadioPhysics'),
)
title = models.CharField(max_length=60)
type = models.IntegerField(max_length=20, choices=TYPE_CHOICES, default=0)
Не нужно ли промежуточных моделей навставлять, не запутано ли тут все?

Всем заранее спасибо!
fth
Нарисуйте модель, например на UML, и визуализируйте её (например в Visio).
Очень помогает сделать лаконичную структуру моделей.
Leon
Попробую. Спасибо.

Но для той модели которую я привел выше не срабатывает manage.py syncdb - выдает ошибку, типа:
File … in _cursor self.connection = Database.connect(**kwargs)
sqlite3.OperationalError: unable to open database file.

В чем может быть проблема?
slav0nic
путь к файлу бд корректно указал? права на запись в каталог есть?
Leon
slav0nic спастбо - навел на мысль!
Все права были в ажуре.

Что было не верно:
в settings.py
DATABASES = {
'default': {
'ENGINE': 'sqlite3',
'NAME': 'testbase',
..........................,
- базу назвал, а нужно было назвать с расширением db, т.е. нужно testbase.db.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB