Get_object_or_404 унаследованные классы

У меня есть абстрактный класс Type, и у него есть 3 унаследованных класса Type1 Type2 Type3 70% этих свойств 3 классов одинаковы.

я хочу так;

Tip=get_object_or_404(Type,tournament__slug=tournamentslug,slug=slug,game__slug=gameslug,) 

Однако тип является абстрактным классом, я не могу получить объект или фильтр

views.py (сейчас)

def game_detail(request,tournamentslug,slug,gameslug):
        tip1=get_object_or_404(Type1, tournament__slug=tournamentslug,slug=slug,game__slug=gameslug,)
        tip2=get_object_or_404(Type2,tournament__slug=tournamentslug,slug=slug,game__slug=gameslug,)
        tip3=get_object_or_404(Type3,tournament__slug=tournamentslug,slug=slug,game__slug=gameslug,)

Я не понял вопроса. Вы хотите проверить, являются ли турнирный слаг, слаг и геймслаг полями Type (базового абстрактного класса)!?

geckos 16.07.2019 20:12

да я хочу лайк ; Tip=get_object_or_404(Type,tournament__slug=tournamentslug,s‌​lug=slug,game__slug=‌​gameslug,) Однако тип является абстрактным классом, я не могу получить объект или фильтр

Enes 16.07.2019 20:13

Если Type является абстрактным, он не поддерживается какой-либо таблицей, поэтому откуда get_object_or_404(Type,...) будет получать свои значения?

geckos 16.07.2019 21:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете смешивать эти 3 модели, потому что это разные модели и разные таблицы в базе данных. Вам нужно создать свой собственный get_object_or_404 тот, который принимает набор запросов, и ввести туда смешанный набор запросов, или протестировать все 3 модели по отдельности и поднять 404 самостоятельно, когда ничего не стоит.

Или, если 70% данных в этих классах одинаковы, может быть, вы можете просто сохранить их все, используя одну большую модель? Просто объедините Type1 Type2 Type3 в одну универсальную модель Type. ИМО, это более разумно, чем создавать 3 одинаковые модели с номером внутри названия.

Type1 имеет дополнительные 5 полей Type2 имеет дополнительные 3 поля. Также Type1 xxx=models.ForeignKey(). Следовательно, Type2 xxx=models.ManytoManyField. Я сделал это, так что это не было сложно.

Enes 16.07.2019 21:28

Тем не менее, я подумаю об этом, чтобы слить

Enes 16.07.2019 21:29

Вы можете объединить модели, но проблема в том, что если объединенная модель будет представлять ваши данные так, как это было бы, действительно трудно сказать, ничего не зная об этом. Можно ли извлекать данные из типа 2, когда вы ищете тип 1?

geckos 16.07.2019 21:31

Я сделал абстрактный класс, потому что он был очень сложным. Я скомбинирую и посмотрю, что получится.

Enes 16.07.2019 21:47

Другие вопросы по теме