from django.db import models from django.db.models import Prefetch from django.apps import apps class DeckNameTranslation(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) deck = models.ForeignKey("Deck", on_delete=models.PROTECT, related_name='name_translations') language = models.CharField(max_length=64) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name class CardNameTranslation(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) card = models.ForeignKey("Card", on_delete=models.PROTECT, related_name='name_translations') language = models.CharField(max_length=64) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name class Deck(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) hex_color = models.CharField(max_length=9) cardset = models.CharField(max_length=8) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.name class Card(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=128) decks = models.ManyToManyField("Deck") cardset = models.CharField(max_length=8) cardnum = models.IntegerField() style = models.CharField(max_length=255, null=False) rarity_icon = models.CharField(max_length=8) rarity_level = models.IntegerField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): # For display, we show the original rarity icons. return f"{self.name} {self.rarity_icon} {self.cardset}"