diff --git a/apps/course/admin.py b/apps/course/admin.py index 762ac27e..683f950f 100644 --- a/apps/course/admin.py +++ b/apps/course/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import Course, Category, Lesson +from .models import Course, Category, Lesson, Material @admin.register(Course) @@ -28,3 +28,10 @@ class LessonAdmin(admin.ModelAdmin): 'title', 'course', ) + + +@admin.register(Material) +class MaterialAdmin(admin.ModelAdmin): + list_display = ( + 'title', + ) diff --git a/apps/course/migrations/0009_auto_20180129_1458.py b/apps/course/migrations/0009_auto_20180129_1458.py new file mode 100644 index 00000000..d3cdaf3e --- /dev/null +++ b/apps/course/migrations/0009_auto_20180129_1458.py @@ -0,0 +1,39 @@ +# Generated by Django 2.0.1 on 2018-01-29 14:58 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0008_auto_20180129_1436'), + ] + + operations = [ + migrations.CreateModel( + name='Material', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=100, verbose_name='Название материала')), + ('cover', models.ImageField(upload_to='lessons', verbose_name='Фон материала')), + ('short_description', models.TextField(verbose_name='Краткое описание материала')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('update_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'verbose_name': 'Материал', + 'verbose_name_plural': 'Материалы', + 'ordering': ('title',), + }, + ), + migrations.AlterField( + model_name='lesson', + name='short_description', + field=models.TextField(verbose_name='Краткое описание урока'), + ), + migrations.AddField( + model_name='course', + name='materials', + field=models.ManyToManyField(to='course.Material'), + ), + ] diff --git a/apps/course/models.py b/apps/course/models.py index 2a9f881d..31f85487 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -35,6 +35,7 @@ class Course(models.Model): url = models.URLField('Ссылка', default='') status = models.PositiveSmallIntegerField('Статус', default=0, choices=STATUS_CHOICES) likes = models.ManyToManyField(Like) + materials = models.ManyToManyField('Material') created_at = models.DateTimeField(auto_now_add=True) update_at = models.DateTimeField(auto_now=True) @@ -84,7 +85,7 @@ class Category(models.Model): class Lesson(models.Model): title = models.CharField('Название урока', max_length=100) - short_description = models.TextField('Краткое описание курса') + short_description = models.TextField('Краткое описание урока') course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='lessons') cover = models.ImageField('Фон урока', upload_to='lessons') @@ -98,3 +99,20 @@ class Lesson(models.Model): verbose_name = 'Урок' verbose_name_plural = 'Уроки' ordering = ('title',) + + +class Material(models.Model): + title = models.CharField('Название материала', max_length=100) + cover = models.ImageField('Фон материала', upload_to='lessons') + short_description = models.TextField('Краткое описание материала') + + created_at = models.DateTimeField(auto_now_add=True) + update_at = models.DateTimeField(auto_now=True) + + def __str__(self): + return self.title + + class Meta: + verbose_name = 'Материал' + verbose_name_plural = 'Материалы' + ordering = ('title',)