59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
from django.db import models
|
|
from django.urls import reverse
|
|
|
|
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
|
|
class Category(models.Model):
|
|
|
|
name = models.CharField(unique=True, max_length=64)
|
|
|
|
class Meta:
|
|
verbose_name = _("Category")
|
|
verbose_name_plural = _("Categories")
|
|
|
|
def __str__(self):
|
|
return self.name.capitalize()
|
|
|
|
|
|
class Tags(models.Model):
|
|
|
|
tag_slug = models.CharField(unique=True, max_length=64,)
|
|
date_added = models.DateTimeField(auto_now_add=True, editable=True)
|
|
category = models.ManyToManyField(Category)
|
|
|
|
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, null=True)
|
|
object_id = models.PositiveBigIntegerField(null=True)
|
|
content_object = GenericForeignKey('content_type', 'object_id')
|
|
|
|
class Meta:
|
|
verbose_name = _("Tag")
|
|
verbose_name_plural = _("Tags")
|
|
|
|
def __str__(self):
|
|
return self.tag_slug
|
|
|
|
|
|
class Users(models.Model):
|
|
|
|
user_hash = models.CharField(unique=True, max_length=64,)
|
|
date_added = models.DateTimeField(auto_now_add=True, editable=True)
|
|
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
|
|
|
|
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, null=True)
|
|
object_id = models.PositiveBigIntegerField(null=True)
|
|
content_object = GenericForeignKey('content_type', 'object_id')
|
|
|
|
|
|
class Meta:
|
|
verbose_name = _("user")
|
|
verbose_name_plural = _("Users")
|
|
|
|
def __str__(self):
|
|
return self.content_object.artist
|
|
|
|
def get_absolute_url(self):
|
|
return reverse('sites:artist_profile', args=[self.user_hash])
|