class Migration(migrations.Migration): dependencies = [ ('courses', '0025_cleaning_up_course_model'), ] operations = [ migrations.AlterField( model_name='lesson', name='date', field=models.DateField(default=courses.models.Lesson.default_lesson_date), ), migrations.AlterField( model_name='worksheet', name='title', field=models.CharField(default=django.utils.timezone.now, max_length=50, unique=True), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=120)), ('content', models.TextField()), ('image', models.ImageField(blank=True, null=True, upload_to=courses.models.uploded_location)), ('publish', models.DateField()), ('timestamp', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('video', models.FileField(blank=True, null=True, upload_to=courses.models.uploded_location)), ('user', models.ForeignKey(blank=True, null=True, on_delete=True, to=settings.AUTH_USER_MODEL)), ], ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('orgnization', '0001_initial'), ] operations = [ migrations.CreateModel( name='Chapter', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('chapter_order', models.IntegerField(default=0, verbose_name='章节序号')), ('chapter_title', models.CharField(max_length=128, verbose_name='章节标题')), ('chapter_desc', models.CharField(max_length=1024, verbose_name='章节介绍')), ('add_time', models.DateField(default=datetime.datetime.now, verbose_name='添加时间')), ], ), migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, verbose_name='课程名')), ('desc', models.CharField(max_length=300, verbose_name='课程描述')), ('detail', models.TextField(verbose_name='课程详情')), ('degree', models.CharField(choices=[('cj', '初级'), ('zj', '中级'), ('gj', '高级')], max_length=2, verbose_name='难度')), ('score', models.IntegerField(default=0, verbose_name='课程评分')), ('total_duration_study', models.IntegerField(default=0, verbose_name='学习时长(分钟)')), ('students_nums', models.IntegerField(default=0, verbose_name='学习人数')), ('fav_nums', models.IntegerField(default=0, verbose_name='收藏人数')), ('image', models.ImageField(upload_to='courses/%Y/%m', verbose_name='课程封面')), ('click_nums', models.IntegerField(default=0, verbose_name='点击数')), ('category', models.CharField(default='理论知识', max_length=20, verbose_name='课程类别')), ('tag', models.CharField(default='', max_length=10, verbose_name='课程标签')), ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), ('course_org', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='orgnization.CourseOrg', verbose_name='课程机构')), ('teacher', models.ManyToManyField(blank=True, null=True, to='orgnization.Teacher', verbose_name='授课教师')), ], options={ 'verbose_name': '课程', 'verbose_name_plural': '课程', }, ), migrations.CreateModel( name='CourseResource', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='名称')), ('download', models.FileField(upload_to='course/resource/%Y/%m', verbose_name='资源文件')), ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='课程')), ], options={ 'verbose_name': '课程资源', 'verbose_name_plural': '课程资源', }, ), migrations.CreateModel( name='Lesson', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('lesson_order', models.IntegerField(default=0, verbose_name='小节序号')), ('lesson_name', models.CharField(max_length=128, verbose_name='小节标题')), ('lesson_time_duration', models.CharField(max_length=10, verbose_name='视频时长')), ('add_time', models.DateField(default=datetime.datetime.now, verbose_name='添加时间')), ('chapter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Chapter', verbose_name='小节')), ], options={ 'verbose_name': '章节', 'verbose_name_plural': '章节', }, ), migrations.CreateModel( name='Video', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, verbose_name='视频名')), ('video_source', models.FileField(upload_to=courses.models.Video.upload_to)), ('add_time', models.DateTimeField(default=datetime.datetime.now, verbose_name='添加时间')), ('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Lesson', verbose_name='章节')), ], options={ 'verbose_name': '视频', 'verbose_name_plural': '视频', }, ), migrations.AddField( model_name='chapter', name='course', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='章节'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Contest', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField()), ('title', models.TextField()), ('statements', models.FileField(blank=True, upload_to=courses.models.get_statements_file_path)), ('show_statements', models.BooleanField(default=False)), ('duration', models.IntegerField(default=0)), ('coefficient', models.FloatField(default=1.0)), ('is_olymp', models.BooleanField(default=False)), ('judge', models.CharField(choices=[('EJ', 'Ejudge'), ('CF', 'Codeforces'), ('IN', 'Informatics')], default='EJ', max_length=2)), ('contest_id', models.IntegerField()), ('external_group_id', models.TextField(blank=True)), ('other_link', models.TextField(blank=True)), ], ), migrations.CreateModel( name='ContestLink', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField()), ('file', models.FileField(blank=True, upload_to=courses.models.get_contest_file_path)), ('link', models.TextField(blank=True)), ('new_tab', models.BooleanField(default=False)), ('priority', models.IntegerField(default=0)), ('contest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='courses.Contest')), ], ), migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.TextField(unique=True)), ('title', models.TextField(blank=True)), ('subtitle', models.TextField(blank=True)), ('template', models.TextField(default='course.html')), ('ejudge_url', models.TextField(blank=True)), ('url', models.TextField(blank=True)), ('name_in_main', models.TextField(blank=True)), ], ), migrations.CreateModel( name='CourseLink', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField()), ('file', models.FileField(blank=True, upload_to=courses.models.get_course_file_path)), ('link', models.TextField(blank=True)), ('hidden', models.BooleanField(default=False)), ('new_tab', models.BooleanField(default=False)), ('priority', models.IntegerField(default=0)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='courses.Course')), ], ), migrations.CreateModel( name='Main', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.TextField(blank=True)), ('subtitle', models.TextField(blank=True)), ('courses', models.ManyToManyField(to='courses.Course')), ], ), migrations.CreateModel( name='MainLink', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('text', models.TextField()), ('file', models.FileField(blank=True, upload_to=courses.models.get_main_file_path)), ('link', models.TextField(blank=True)), ('hidden', models.BooleanField(default=False)), ('new_tab', models.BooleanField(default=False)), ('priority', models.IntegerField(default=0)), ('main', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='links', to='courses.Main')), ], ), migrations.CreateModel( name='Page', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('label', models.TextField(unique=True)), ('title', models.TextField(blank=True)), ('subtitle', models.TextField(blank=True)), ('content', models.TextField(blank=True)), ], ), migrations.CreateModel( name='Participant', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField(verbose_name='Surname and name')), ('ejudge_id', models.IntegerField(blank=True, null=True)), ('informatics_id', models.IntegerField(blank=True, null=True)), ('codeforces_handle', models.TextField(blank=True)), ('comment', models.TextField(blank=True)), ('email', models.TextField(blank=True)), ('telegram_id', models.TextField(blank=True)), ('vk_id', models.TextField(blank=True)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participants', to='courses.Course')), ], ), migrations.CreateModel( name='ParticipantsGroup', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField()), ('short_name', models.TextField()), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='courses.Course')), ], ), migrations.CreateModel( name='Standings', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.TextField()), ('olymp', models.BooleanField(default=False)), ('enable_marks', models.BooleanField(default=False)), ('js_for_contest_mark', models.TextField(blank=True)), ('js_for_total_mark', models.TextField(blank=True)), ('js', models.TextField(blank=True)), ('contests', models.ManyToManyField(related_name='standings', to='courses.Contest')), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='standings', to='courses.Course')), ], options={ 'verbose_name_plural': 'Standings', }, ), migrations.CreateModel( name='Teacher', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField()), ('description', models.TextField(blank=True)), ('photo', models.FileField(blank=True, upload_to=courses.models.get_photo_path)), ('vk_id', models.TextField(blank=True)), ('telegram_id', models.TextField(blank=True)), ], ), migrations.AddField( model_name='participant', name='group', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='participants', to='courses.ParticipantsGroup'), ), migrations.AddField( model_name='course', name='teachers', field=models.ManyToManyField(blank=True, related_name='courses', to='courses.Teacher'), ), migrations.AddField( model_name='contest', name='course', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contests', to='courses.Course'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('taggit', '0002_auto_20150616_2121'), ] operations = [ migrations.CreateModel( name='Alternative', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('description', models.TextField(max_length=500)), ('is_correct', models.BooleanField(default=False)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={ 'verbose_name': 'Category', 'verbose_name_plural': 'Categories', }, ), migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('description', models.TextField(max_length=300)), ('image', models.ImageField(blank=True, null=True, upload_to='images/courses')), ('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='categories', to='courses.Category')), ], ), migrations.CreateModel( name='Document', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('uri', models.FileField(upload_to=courses.models.upload_to_dir)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], ), migrations.CreateModel( name='Enrollment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='enrollments', to='courses.Course')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Exam', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], ), migrations.CreateModel( name='Instructor', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('contact', models.EmailField(max_length=100)), ('about', models.TextField(max_length=200)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], ), migrations.CreateModel( name='Question', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('statement', models.TextField(max_length=500)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='questions', to='courses.Exam')), ], ), migrations.CreateModel( name='Unit', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('description', models.CharField(max_length=100)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='units', to='courses.Course')), ], ), migrations.CreateModel( name='Video', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('uri', models.URLField(max_length=2000)), ('created_at', models.DateField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('unit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='videos', to='courses.Unit')), ], ), migrations.AddField( model_name='exam', name='unit', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='exams', to='courses.Unit'), ), migrations.AddField( model_name='document', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='courses.Unit'), ), migrations.AddField( model_name='course', name='instructor', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='instructors', to='courses.Instructor'), ), migrations.AddField( model_name='course', name='keywords', field=taggit.managers.TaggableManager( help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='keywords'), ), migrations.AddField( model_name='alternative', name='question', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='alternatives', to='courses.Question'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Course title')), ('description', models.TextField(blank=True, verbose_name='Course description')), ('price', models.PositiveIntegerField( verbose_name='Course full price')), ], bases=(courses.models.MetaMixin, models.Model), ), migrations.CreateModel( name='Lecturer', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('first_name', models.CharField(blank=True, max_length=255, verbose_name='First name')), ('last_name', models.CharField(blank=True, max_length=255, verbose_name='Last name')), ('photo', models.ImageField(blank=True, upload_to='persons', verbose_name='Lecturers photo')), ('bio', models.TextField(blank=True, verbose_name='Lecturer bio')), ('user', models.OneToOneField( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lecturer', to=settings.AUTH_USER_MODEL)), ], bases=(courses.models.MetaMixin, models.Model), ), migrations.CreateModel( name='Lesson', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Lesson title')), ('description', models.TextField(blank=True, verbose_name='Lesson description')), ('date', models.DateTimeField(blank=True, verbose_name='Lesson date')), ('homework', models.TextField(blank=True, verbose_name='Lesson homework')), ('course', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lessons', to='courses.Course', verbose_name='Course')), ('lecturer', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lections', to='courses.Lecturer', verbose_name='Lesson speaker')), ], bases=(courses.models.MetaMixin, models.Model), ), migrations.CreateModel( name='UserProperty', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('verified', models.BooleanField(default=False, verbose_name='Is verified')), ('avatar', models.ImageField(blank=True, null=True, upload_to='images/user/avatar', verbose_name='User avatar')), ('birthdate', models.DateField(blank=True, null=True, verbose_name='User birthdate')), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name='user_property', to=settings.AUTH_USER_MODEL)), ], bases=(courses.models.MetaMixin, models.Model), ), migrations.CreateModel( name='Score', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('rate', models.PositiveIntegerField(choices=[(0, '0'), (1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5')], verbose_name='Score')), ('lecturer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to='courses.Lecturer', verbose_name='Lecturer')), ('lesson', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to='courses.Lesson')), ('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='scores', to=settings.AUTH_USER_MODEL)), ], bases=(courses.models.MetaMixin, models.Model), ), migrations.AddField( model_name='course', name='lecturers', field=models.ManyToManyField(related_name='courses', to='courses.Lecturer', verbose_name='Course lecturers'), ), migrations.AddField( model_name='course', name='students', field=models.ManyToManyField(blank=True, related_name='courses', to=settings.AUTH_USER_MODEL, verbose_name='Course students'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Course', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=300, verbose_name='Title')), ('slug', models.SlugField()), ('places', models.IntegerField(verbose_name='Places to course')), ('description', models.TextField(verbose_name='About the course')), ('price', models.IntegerField(verbose_name='Price')), ('is_active', models.BooleanField(verbose_name='Is course active?')), ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='Date added')), ], options={ 'ordering': ['-date_added'], 'verbose_name_plural': 'Courses', 'verbose_name': 'Course', }, ), migrations.CreateModel( name='CourseReview', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('first_name', models.CharField(max_length=50, verbose_name='First name')), ('last_name', models.CharField(max_length=60, verbose_name='Last name')), ('avatar', models.FileField(blank=True, null=True, upload_to=courses.models.upload_path, verbose_name='Avatar')), ('link_to_fb', models.CharField(blank=True, max_length=200, null=True, verbose_name='Link to Facebook')), ('link_to_inst', models.CharField(blank=True, max_length=200, null=True, verbose_name='Link to Instagram')), ('link_to_linkedin', models.CharField(blank=True, max_length=200, null=True, verbose_name='Link to LinkedIn')), ('review', models.TextField(verbose_name='Review')), ('video', models.FileField(blank=True, null=True, upload_to=courses.models.upload_path, verbose_name='Video review')), ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='Date added')), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Course')), ], options={ 'ordering': ['-date_added'], 'verbose_name_plural': 'Courses reviews', 'verbose_name': 'Course review', }, ), migrations.CreateModel( name='CourseTypes', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('permission', models.CharField(choices=[('F_S', 'Fast start'), ('A_I', 'All-inclusive'), ('P', 'Premium')], default='F_S', max_length=50, verbose_name='Permission')), ('title', models.CharField(max_length=60, verbose_name='Title')), ('is_active', models.BooleanField(verbose_name='Is course type active?')), ('description', models.TextField(verbose_name='Description')), ('course', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course', verbose_name='Course')), ], options={ 'verbose_name_plural': 'Course types', 'verbose_name': 'Course type', }, ), migrations.CreateModel( name='Discount', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=100, verbose_name='Title')), ('slug', models.SlugField()), ('percents', models.IntegerField(verbose_name='Percents')), ('from_date', models.DateField(verbose_name='From')), ('till_date', models.DateField(verbose_name='Till')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('author', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='Author')), ], options={ 'verbose_name_plural': 'Discounts', 'verbose_name': 'Discount', }, ), migrations.CreateModel( name='Student', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('first_name', models.CharField(max_length=50, verbose_name='First name')), ('last_name', models.CharField(max_length=60, verbose_name='Last name')), ('email', models.EmailField(max_length=100, unique=True, verbose_name='Email')), ('phone', models.CharField(max_length=20, unique=True, verbose_name='Phone')), ('skype', models.CharField(blank=True, max_length=40, null=True, unique=True, verbose_name='Skype')), ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='Date added')), ('courses', models.ManyToManyField(to='courses.Course', verbose_name='Courses')), ], options={ 'ordering': ['-date_added'], 'verbose_name_plural': 'Students', 'verbose_name': 'Student', }, ), migrations.CreateModel( name='Teacher', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('first_name', models.CharField(max_length=50, verbose_name='First name')), ('last_name', models.CharField(max_length=60, verbose_name='Last name')), ('email', models.EmailField(max_length=100, verbose_name='Email')), ('avatar', models.FileField(blank=True, null=True, upload_to=courses.models.upload_path, verbose_name='Avatar')), ('age', models.DateField(verbose_name='Age')), ('description', models.TextField(blank=True, null=True, verbose_name='About teacher')), ], options={ 'verbose_name_plural': 'Teachers', 'verbose_name': 'Teacher', }, ), migrations.AddField( model_name='course', name='discount', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='courses.Discount', verbose_name='Discount'), ), migrations.AddField( model_name='course', name='teachers', field=models.ManyToManyField(to='courses.Teacher', verbose_name='Teachers'), ), ]