diff --git a/apps/course/migrations/0020_auto_20180202_1716.py b/apps/course/migrations/0020_auto_20180202_1716.py new file mode 100644 index 00000000..1b7f63d8 --- /dev/null +++ b/apps/course/migrations/0020_auto_20180202_1716.py @@ -0,0 +1,48 @@ +# Generated by Django 2.0.2 on 2018-02-02 17:16 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import polymorphic_tree.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('contenttypes', '0002_remove_content_type_name'), + ('course', '0019_auto_20180130_1630'), + ] + + operations = [ + migrations.AlterModelOptions( + name='coursecomment', + options={'base_manager_name': 'objects', 'ordering': ('tree_id', 'lft'), 'verbose_name': 'Комментарий курса', 'verbose_name_plural': 'Комментарии курсов'}, + ), + migrations.AlterModelOptions( + name='lessoncomment', + options={'base_manager_name': 'objects', 'ordering': ('tree_id', 'lft'), 'verbose_name': 'Комментарий урока', 'verbose_name_plural': 'Комментарии уроков'}, + ), + migrations.RemoveField( + model_name='coursecomment', + name='parent', + ), + migrations.RemoveField( + model_name='lessoncomment', + name='parent', + ), + migrations.AddField( + model_name='comment', + name='parent', + field=polymorphic_tree.models.PolymorphicTreeForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='children', to='course.Comment'), + ), + migrations.AddField( + model_name='comment', + name='polymorphic_ctype', + field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_course.comment_set+', to='contenttypes.ContentType'), + ), + migrations.AlterField( + model_name='comment', + name='author', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/apps/course/models.py b/apps/course/models.py index 2cbc6d27..954a8160 100644 --- a/apps/course/models.py +++ b/apps/course/models.py @@ -3,7 +3,7 @@ from django.db import models from django.utils import timezone from django.contrib.auth import get_user_model -from mptt.models import MPTTModel, TreeForeignKey +from polymorphic_tree.models import PolymorphicMPTTModel, PolymorphicTreeForeignKey from .manager import CategoryQuerySet @@ -123,9 +123,10 @@ class Material(models.Model): ordering = ('title',) -class Comment(MPTTModel): - author = models.ForeignKey(User, on_delete=models.PROTECT) +class Comment(PolymorphicMPTTModel): content = models.TextField('Текст комментария', default='') + author = models.ForeignKey(User, on_delete=models.CASCADE) + parent = PolymorphicTreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.PROTECT) created_at = models.DateTimeField(auto_now_add=True) update_at = models.DateTimeField(auto_now=True) @@ -142,11 +143,9 @@ class Comment(MPTTModel): class MPTTMeta: order_insertion_by = ['-created_at'] - abstract = True class CourseComment(Comment): - parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.PROTECT) course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name='comments') class Meta(Comment.Meta): @@ -155,7 +154,6 @@ class CourseComment(Comment): class LessonComment(Comment): - parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True, on_delete=models.PROTECT) lesson = models.ForeignKey(Lesson, on_delete=models.CASCADE, related_name='comments') class Meta(Comment.Meta):