Advertisement
Guest User

Untitled

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