Автозаполнение slug с помощью foreign key и DateTimeField (продолжение)

  • Опубликовано:
Предыдущая модель была сделана чрезвычайно коряво (нужно было сделать строковое форматирование) и с ошибкой - id не вставлялось, пока не был сохранен материал.
class Schedule(models.Model):
    type = models.ForeignKey(ScheduleType)
    slug = models.CharField(max_length=18, blank=True)
    description = models.TextField()
    is_published = models.BooleanField(default=True)
    begins_at = models.DateTimeField()
    ends_at = models.DateTimeField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return u'%s - %s' % (self.type, self.begins_at)


    # Here is where the code you need starts.
    def save(self, *args, **kwargs):
        super(Schedule, self).save()
        month = str(self.begins_at.month)
        if len(month) < 2:
            month = '0' + month
        self.slug = '%i/%s/%i/%i' % (
            self.begins_at.year, month, self.begins_at.day, self.id
            )
        super(Schedule, self).save(*args, **kwargs)

    @models.permalink
    def get_absolute_url(self):
        return 'schedule', (), { 'schedule_slug': self.slug }