You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

58 lines
2.2 KiB

from django.core.urlresolvers import reverse
from django.db import models
from django.utils import timezone
def photo_filename(instance, filename):
from slugify import slugify_filename
return 'photo_uploads/' + slugify_filename(filename)
class News(models.Model):
created = models.DateTimeField('Дата и время', auto_now_add=True, editable=False)
title = models.CharField('Заголовок', max_length=512, null=False, blank=False, unique=True)
slug = models.SlugField('Ссылка', max_length=512, null=False, blank=False, unique=True)
text = models.TextField('Новость', null=False, blank=False)
is_public = models.BooleanField('Публиковать', default=True)
image = models.ImageField('Картинка', upload_to=photo_filename)
tags_list = models.ManyToManyField('NewsTag', blank=True)
class Meta:
verbose_name = 'новость'
verbose_name_plural = 'новости'
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('news_detail', args=(self.slug,))
class NewsTag(models.Model):
title = models.CharField('Заголовок', max_length=512, null=False, blank=False, unique=True)
slug = models.SlugField('Ссылка', max_length=512, null=False, blank=False, unique=True)
news_list = models.ManyToManyField(News, blank=True)
class Meta:
verbose_name = 'тег'
verbose_name_plural = 'теги'
def __str__(self):
return self.title
class NewsComment(models.Model):
created = models.DateTimeField('Дата и время', auto_now_add=True, editable=False)
name = models.CharField('Имя', max_length=45, null=False, blank=False)
email = models.EmailField('Email (не будет опубликован)', null=False, blank=False)
text = models.TextField('Комментарий', null=False, blank=False)
reply_to = models.ForeignKey('self', null=True, blank=True)
news = models.ForeignKey(News, related_name='comments')
class Meta:
verbose_name = 'комментарий'
verbose_name_plural = 'комментарии'
def __str__(self):
return '{}: {}'.format(self.name, self.news.title)