Я пытаюсь реализовать структуру моего приложения.Чтобы иметь логический код, я пытаюсь иметь чистую схему наследования для моих моделей.Но похоже, что 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
, я получу все четыре из них.
Могу ли я в любом случае правильно распределить их по типу?