Джанго моделирует последовательное наследование - PullRequest
0 голосов
/ 08 февраля 2019

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

Сейчас у меня есть код, похожий на этот:

# in file scene.models.py
class Scene(models.Model):
    name = models.CharField(max_length=200)

# in file element.models.py
class BaseElement(models.Model):
    name = models.CharField(max_length=200)
    scenes = models.ManyToManyField(
        Scene,
        related_name="%(app_label)s_%(class)s_related",
        related_query_name="%(app_label)s_%(class)ss",
        blank=True
    )

    class Meta:
        abstract = True

class ChildA(BaseElement):
    foo = models.CharField(max_length=200)

class ChildB(ChildA):
    bar = models.CharField(max_length=200)

От администратора django, явозможность добавить некоторые записи childA и childB без проблем.Проблема появляется, когда я хочу получить их в своем шаблоне.Допустим, у меня есть 2 записи типа ChildA и 2 записи типа ChildB, все они связаны с одной и той же «сценой».Когда я сделаю object.element_childb_related.all (object сценой), чтобы получить только элементы childB сцены, я ничего не получу.Однако, если я получу object.element_childa_related.all, я получу все четыре из них.

Могу ли я в любом случае правильно распределить их по типу?

...