Skip to content

Instantly share code, notes, and snippets.

@dmitrii-kalashnikov
Created December 22, 2018 12:03
Show Gist options
  • Save dmitrii-kalashnikov/30b159cfa2ec64b4baaf865a3b512a2d to your computer and use it in GitHub Desktop.
Save dmitrii-kalashnikov/30b159cfa2ec64b4baaf865a3b512a2d to your computer and use it in GitHub Desktop.
from django.db import models
from django.shortcuts import reverse
from django.utils.text import slugify
from time import time
from django.contrib.auth.models import User
from django.utils import timezone
from django.conf import settings
from versatileimagefield.fields import VersatileImageField
def gen_slug(s):
new_slug=slugify(s, allow_unicode=True)
return new_slug + '-' +str(int(time()))
class Post(models.Model): # Books
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
image = VersatileImageField(
'Image',
upload_to='media_my/',null=True,
blank=True
)
title = models.CharField(max_length=150, db_index=True)
slug = models.SlugField(max_length=150, unique=True, blank=True)
tags = models.ManyToManyField('Tag', blank=True, related_name='posts')
body1 = models.TextField(blank=True)
body2 = models.TextField(blank=True)
body3 = models.TextField(blank=True)
body4 = models.TextField(blank=True)
body5 = models.TextField(blank=True)
body6 = models.TextField(blank=True)
body7 = models.TextField(blank=True)
body8 = models.TextField(blank=True)
body9 = models.TextField(blank=True)
body10 = models.TextField(blank=True)
date_pub= models.DateTimeField(auto_now_add=True)
def get_absolute_url(self):
return reverse('post_detail_url', kwargs={'slug':self.slug})
def get_update_url(self):
return reverse('post_update_url', kwargs={'slug': self.slug})
def gef_delete_url(self):
return reverse('post_delete_url', kwargs={'slug': self.slug})
def save(self, *args, **kwargs):
if not self.id:
self.slug= gen_slug(self.title)
super().save(*args, **kwargs)
def __str__(self):
return self.title
class Meta:
ordering = ['-date_pub']
class Tag(models.Model): # Tags of books
title=models.CharField(max_length=50)
slug=models.SlugField(max_length=50, unique=True)
def get_absolute_url(self):
return reverse('tag_detail_url', kwargs={'slug': self.slug})
def get_update_url(self):
return reverse('tag_update_url', kwargs={'slug': self.slug})
def gef_delete_url(self):
return reverse('tag_delete_url', kwargs={'slug': self.slug})
def __str__(self):
return self.title
class FavoritePost(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='usersbooks')
post = models.ManyToManyField('Post')
def __str__(self):
return self.post
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment