Advertisement
Guest User

models.py

a guest
Nov 11th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.78 KB | None | 0 0
  1. from django.shortcuts import reverse
  2. from django.utils.text import slugify
  3. from time import time
  4. from django.contrib.auth.models import User
  5. from django.db import models
  6.  
  7. def gen_slug(s):
  8.     new_slug = slugify(s, allow_unicode=True)
  9.     return f'{new_slug}-{str(int(time()))}'
  10.  
  11.  
  12. class Post(models.Model):
  13.     title = models.CharField(max_length=150, db_index=True)
  14.     author = models.ForeignKey(User, on_delete=models.CASCADE)
  15.     slug = models.SlugField(max_length=150, blank=True, unique=True)
  16.     body = models.TextField(blank=True, db_index=True)
  17.     tags = models.ManyToManyField('Tag', blank=True, related_name='posts')
  18.     date_pub = models.DateTimeField(auto_now_add=True)
  19.  
  20.     def __str__(self):
  21.         return self.title
  22.  
  23.     def save(self, *args, **kwargs):
  24.         if not self.id:
  25.             self.slug = gen_slug(self.title)
  26.         super().save(*args, **kwargs)
  27.  
  28.     def get_absolute_url(self):
  29.         return reverse('post_detail_url', kwargs={'slug': self.slug})
  30.  
  31.     def get_update_url(self):
  32.         return reverse('post_update_url', kwargs={'slug': self.slug})
  33.  
  34.     def get_delete_url(self):
  35.         return reverse('post_delete_url', kwargs={'slug': self.slug})
  36.  
  37.     class Meta:
  38.         ordering = ['-date_pub']
  39.  
  40.  
  41.  
  42. class Tag(models.Model):
  43.     title = models.CharField(max_length=50)
  44.     slug = models.SlugField(max_length=50, unique=True)
  45.  
  46.     def __str__(self):
  47.         return self.title
  48.  
  49.     def get_absolute_url(self):
  50.         return reverse('tag_detail_url', kwargs={'slug': self.slug})
  51.  
  52.     def get_delete_url(self):
  53.         return reverse('tag_delete_url', kwargs={'slug': self.slug})
  54.  
  55.     def get_update_url(self):
  56.         return reverse('tag_update_url', kwargs={'slug': self.slug})
  57.  
  58.     class Meta:
  59.         ordering = ['title']
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement