Использование метода унаследованного класса на классах моделей Django

У меня есть два класса модели Django с соответствующими таблицами DB, оба используют один и тот же метод класса. Поэтому я провел рефакторинг и создал родительский класс с методом class:

from django.db import models
from django.forms.models import model_to_dict

class Parent(models.Model):
    @classmethod
    def get_random(cls, variables: Set[str]) -> str:
        elements: list = []
        for o in cls.objects.filter(active=True):
            elements.append(model_to_dict(o, fields=["id", "string"]))
        chosen: dict = choice(elements)
        # some other code...
        return chosen["string"]

class Child1(Parent):
    string = models.CharField(max_length=100)
    type = models.ManyToManyField(Type, related_name="article_titles")
    active = models.BooleanField(default=True)

    class Meta:
        db_table = "table_child_1"

class Child2(Parent):
    string = models.TextField()
    active = models.BooleanField(default=True)

    class Meta:
        db_table = "table_child_2"

Когда я вызываю метод на одном из дочерних классов, например chosen_string: str = Child1.get_random(variables=variables), я получаю ошибку Django DB:

django.db.utils.OperationalError: no such table: app_name_parent.

Похоже, что метод родительского класса вызывается на имя таблицы Django DB по умолчанию для родительского класса, вместо дочернего.

Что я здесь упустил? Каким будет наиболее элегантное решение для использования одного и того же метода пользовательского класса, запрашивающего БД для двух моделей Django?

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