Здравствуйте!
Мне необходимо сделать архив статей по годам и месяцам создания:
2007
май
статья 1
статья 2
август
статья 3
2010
....
Для этого я решил воспользоваться пакетом django-mptt. Создаю вот такую модель:
Таблица CategoryYear - описывает категорию верхнего уровня дерева, содержащую год создания
публикации (статьи).
class CategoryYear(MPTTModel):
name = models.CharField('Year', max_length = 4)
parent = TreeForeignKey('self', blank = False, null = False, db_index = True, related_name = 'yers')
class Meta:
verbose_name = u'Год'
verbose_name_plural = u'Год'
def __unicode__(self):
return self.name
Таблица CategoryMonth - описывает категорию второго уровня дерева, содержащую наименование
месяца создания публикации (статьи).
class CategoryMonth(MPTTModel):
name = models.CharField(max_length = 8)
parent = TreeForeignKey(CategoryYear, blank = False, null = False, db_index = True, related_name = 'months')
slug = models.SlugField()
class Meta:
verbose_name = u'Месяц'
verbose_name_plural = u'Месяц'
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(translit(self.name, 'ru', reversed = True))
super(CategoryMonth, self).save(*args, **kwargs)
Таблица Atticle - описывает публикацию (статью).
class Article(models.Model):
parent = TreeForeignKey(CategoryMonth, blank = False, null = False, db_index = True, related_name = 'articles')
title = models.CharField()
slug = models.SlugField()
detail_text = models.CharField()
data = models.DateField()
active = models.BooleanField(default = False)
class Meta:
verbose_name = u'Статья'
verbose_name_plural = u'Статьи'
def __unicode__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(translit(self.title, 'ru', reversed = True))
super(Article, self).save(*args, **kwargs)
Поскольку я в Django новичок, прошу прокомментировать насколько правильны мое решение и модель.
Updated 18 Jan. 2017, 15:05 by ashikhminag.