Форум сайта python.su
Всем привет.
Начал писать приложение, для загрузки разного рода содержания на сайт для образования.
Структура следующая: есть “факультет” (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)
Офлайн
Нарисуйте модель, например на UML, и визуализируйте её (например в Visio).
Очень помогает сделать лаконичную структуру моделей.
Офлайн
Попробую. Спасибо.
Но для той модели которую я привел выше не срабатывает manage.py syncdb - выдает ошибку, типа:
File … in _cursor self.connection = Database.connect(**kwargs)
sqlite3.OperationalError: unable to open database file.
В чем может быть проблема?
Офлайн
путь к файлу бд корректно указал? права на запись в каталог есть?
Офлайн
slav0nic спастбо - навел на мысль!
Все права были в ажуре.
Что было не верно:
в settings.py
DATABASES = {
'default': {
'ENGINE': 'sqlite3',
'NAME': 'testbase',
..........................,
Офлайн