drulum/links/models.py

47 lines
1.4 KiB
Python

from django.db import models
from django.urls import reverse_lazy
from django.utils.text import slugify
class Category(models.Model):
title = models.CharField(max_length=40, unique=True)
slug = models.SlugField(max_length=40, unique=True)
introduction = models.TextField(blank=True, null=True)
parent = models.ForeignKey(
"self", blank=True, null=True, on_delete=models.CASCADE, related_name="children"
)
def save(
self, force_insert=False, force_update=False, using=None, update_fields=None
):
if not self.slug:
self.slug = slugify(self.title)
return super(Category, self).save()
def get_absolute_url(self):
return reverse_lazy("links:list_category", args=["self.slug"])
def __str__(self):
return self.title
class Meta:
ordering = ["title"]
class Link(models.Model):
title = models.CharField(max_length=200, unique=True)
website = models.URLField(unique=True)
introduction = models.TextField(blank=True, null=True)
category = models.ForeignKey(
Category, on_delete=models.PROTECT, related_name="links"
)
followed = models.PositiveIntegerField(default=0)
created = models.DateTimeField(auto_now_add=True)
is_published = models.BooleanField(default=False)
def __str__(self):
return self.title
class Meta:
ordering = ["category", "title"]