from django.db import models from apps.core.models import BaseModel class Achievement(BaseModel): def image_url_upload_to(instance, filename): return f"achievements/{instance.id}/icon/{filename}" name = models.CharField( max_length=30, verbose_name="название", unique=True ) description = models.TextField(verbose_name="описание") icon = models.ImageField( verbose_name="иконка достижения", upload_to=image_url_upload_to, ) slug = models.SlugField(verbose_name="слаг", unique=True) def __str__(self): return self.name class Meta: verbose_name = "ачивка" verbose_name_plural = "ачивки" class UserAchievement(BaseModel): achievement = models.ForeignKey( Achievement, verbose_name="ачивка", on_delete=models.CASCADE ) user = models.ForeignKey( "user.User", verbose_name="пользователь", on_delete=models.CASCADE ) received_at = models.DateTimeField( verbose_name="дата получения", auto_now_add=True ) class Meta: verbose_name = "выданная ачивка" verbose_name_plural = "выданные ачивки"