Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 3, 2010 15:09:23

Leon
От:
Зарегистрирован: 2010-10-20
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

пример Образования

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

Структура следующая: есть “факультет” (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)
Не нужно ли промежуточных моделей навставлять, не запутано ли тут все?

Всем заранее спасибо!



Офлайн

#2 Ноя. 4, 2010 04:47:30

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

пример Образования

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



Офлайн

#3 Ноя. 4, 2010 16:35:21

Leon
От:
Зарегистрирован: 2010-10-20
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

пример Образования

Попробую. Спасибо.

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

В чем может быть проблема?



Офлайн

#4 Ноя. 4, 2010 17:13:40

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

пример Образования

путь к файлу бд корректно указал? права на запись в каталог есть?

Офлайн

#5 Ноя. 4, 2010 22:42:32

Leon
От:
Зарегистрирован: 2010-10-20
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

пример Образования

slav0nic спастбо - навел на мысль!
Все права были в ажуре.

Что было не верно:
в settings.py

DATABASES = {
'default': {
'ENGINE': 'sqlite3',
'NAME': 'testbase',
..........................,
- базу назвал, а нужно было назвать с расширением db, т.е. нужно testbase.db.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version