Модель, использующая множество моделей (Django)

У меня есть проект, в котором монстр может иметь много действий, но я не хочу связывать действие с конкретным монстром. Как я могу это сделать? Код выглядит следующим образом:

Монстры (я разделил так, чтобы можно было расширить и создать лист персонажа на основе базового листа):

from django.db import models
from actions.models import Action

# Create your models here.
from django.utils.text import slugify


class BaseSheet(models.Model):
    name: str = models.CharField(max_length=50)
    race: str = models.CharField(max_length=30)
    size: str = models.CharField(max_length=30)
    ac: int = models.IntegerField()
    ac_type: str = models.CharField(max_length=20)
    hp: int = models.IntegerField()
    hp_dices: str = models.CharField(max_length=10)
    movement: str = models.CharField(max_length=30)
    strength: int = models.IntegerField()
    dexterity: int = models.IntegerField()
    constitution: int = models.IntegerField()
    intelligence: int = models.IntegerField()
    wisdom: int = models.IntegerField()
    charisma: int = models.IntegerField()
    languages: str = models.CharField(max_length=100, default="None")
    slug: str = models.SlugField(blank=True, null=True)

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(f'{self.name}-{self.id}')
        return super().save()


class Monster(BaseSheet):
    challenge: str = models.CharField(default="0", max_length=3)
    description: str = models.TextField(default="")
    actions = models.ForeignKey(Action, on_delete=models.DO_NOTHING)

Действие:

from django.db import models


# Create your models here.
class Action(models.Model):
    name: str = models.CharField(max_length=30)
    description: str = models.TextField()
    is_attack: bool = models.BooleanField(default=False)
    weapon_type: str = models.CharField(max_length=50, blank=True, null=True)
    attack: int = models.IntegerField(blank=True, null=True)
    reach: str = models.CharField(max_length=50, blank=True, null=True)
    hit: int = models.IntegerField(blank=True, null=True)
    hit_dice: str = models.CharField(max_length=10, blank=True, null=True)
    damage_type: str = models.CharField(max_length=50, blank=True, null=True)

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.is_attack:
            self.weapon_type = None
            self.attack = None
            self.reach = None
            self.hit = None
            self.hit_dice = None
            self.damage_type = None

        return super().save()

Edit: Я только что перешел на ManyToManyField в Monsters, но на моем сайте, когда я обращаюсь к Actions, он показывает actions.Action.None

Вернуться на верх