Я искал вокруг для ответа на этот (возможно простой) вопрос, но большинство решений, которые я вижу, кажутся слишком сложными и трудными для понимания.
У меня есть модель "Post", которая является абстрактным базовым классом. Модели "Анонс" и "Событие" наследуются от Почты.
Сейчас я храню связанные списки событий и объявлений в других моделях. Например, у меня есть поля "removed_events" и "deleted_announcements" в другой модели.
Однако в моем проекте "removed_events" и "deleted_announcements" обрабатываются точно так же. Нет необходимости дистанцироваться между "удаленным событием" и "удаленным объявлением". Другими словами, будет достаточно отслеживания полей "removed_posts".
Я не знаю, как (или, возможно, не могу) создать поле "removed_posts", поскольку Post является абстрактным. Тем не менее, прямо сейчас я чувствую, что повторяюсь в коде (и мне приходится делать много беспорядка - некоторые проверки, чтобы выяснить, является ли сообщение, на которое я смотрю, событие или объявление и добавить его к соответствующему удаленное поле).
Какой лучший вариант здесь? Я мог бы делать сообщения не абстрактными, но сами объекты Post никогда не должны создаваться, и я не думаю, что могу применить это на не абстрактном объекте.
Мое понимание баз данных слабое, но у меня создается впечатление, что создание не-абстрактного сообщения будет затруднять базу данных из-за объединений. Это большая сделка?
Наконец, в других моделях есть другие поля, где я хотел бы конденсировать вещи, которые составляют event_list и объявление_записью в post_list, но эти поля необходимо устранить. Я мог бы фильтровать post_list на основе типа post, но вызов filter() будет медленнее, чем возможность прямого доступа к спискам событий и объявлений отдельно, не так ли? Любые предложения здесь?
Спасибо за тонну за это.