diff --git a/apps/course/admin.py b/apps/course/admin.py index 9b5cd1ae..762ac27e 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 +from .models import Course, Category, Lesson @admin.register(Course) @@ -20,3 +20,11 @@ class CourseAdmin(admin.ModelAdmin): @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): pass + + +@admin.register(Lesson) +class LessonAdmin(admin.ModelAdmin): + list_display = ( + 'title', + 'course', + ) diff --git a/apps/course/migrations/0006_lesson.py b/apps/course/migrations/0006_lesson.py new file mode 100644 index 00000000..0d095d28 --- /dev/null +++ b/apps/course/migrations/0006_lesson.py @@ -0,0 +1,29 @@ +# Generated by Django 2.0.1 on 2018-01-29 14:07 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0005_course_from_author'), + ] + + operations = [ + migrations.CreateModel( + name='Lesson', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=100, verbose_name='Название урока')), + ('short_description', models.TextField(verbose_name='Краткое описание курса')), + ('cover', models.ImageField(upload_to='lessons', verbose_name='Фон урока')), + ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lessons', to='course.Course')), + ], + options={ + 'verbose_name': 'Урок', + 'verbose_name_plural': 'Уроки', + 'ordering': ('-title',), + }, + ), + ] diff --git a/apps/course/migrations/0007_auto_20180129_1433.py b/apps/course/migrations/0007_auto_20180129_1433.py new file mode 100644 index 00000000..6f2bc7b7 --- /dev/null +++ b/apps/course/migrations/0007_auto_20180129_1433.py @@ -0,0 +1,17 @@ +# Generated by Django 2.0.1 on 2018-01-29 14:33 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0006_lesson'), + ] + + operations = [ + migrations.AlterModelOptions( + name='lesson', + options={'ordering': ('title',), 'verbose_name': 'Урок', 'verbose_name_plural': 'Уроки'}, + ), + ] diff --git a/apps/course/migrations/0008_auto_20180129_1436.py b/apps/course/migrations/0008_auto_20180129_1436.py new file mode 100644 index 00000000..189d08b1 --- /dev/null +++ b/apps/course/migrations/0008_auto_20180129_1436.py @@ -0,0 +1,25 @@ +# Generated by Django 2.0.1 on 2018-01-29 14:36 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('course', '0007_auto_20180129_1433'), + ] + + operations = [ + migrations.AddField( + model_name='lesson', + name='created_at', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='lesson', + name='update_at', + field=models.DateTimeField(auto_now=True), + ), + ] diff --git a/apps/course/models.py b/apps/course/models.py index 7c7ba259..3b5af116 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -62,6 +62,9 @@ class Course(models.Model): return True return False + def __str__(self): + return self.title + class Meta: verbose_name = "Курс" verbose_name_plural = "Курсы" @@ -77,3 +80,21 @@ class Category(models.Model): class Meta: verbose_name = "Категория" verbose_name_plural = "Категории" + + +class Lesson(models.Model): + title = models.CharField("Название урока", max_length=100) + short_description = models.TextField("Краткое описание курса") + course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='lessons') + cover = models.ImageField("Фон урока", upload_to='lessons') + + 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',)