Мне нужен django способ запроса для моих нужд. Помогите мне с этим. Я новичок в Django
Мне нужен способ запроса в Django. Сейчас я использую необработанные запросы. Что не очень полезно.
SELECT parent.id
CASE
WHEN child.subject is NULL THEN parent.subject
ELSE child.subject
END as subject
FROM parent LEFT JOIN child on parent.id=child.id
Пожалуйста, помогите мне с этим.
Прежде всего, я не уверен, что это хорошая структура модели, если вам нужно иметь одинаковые идентификаторы для родителя и ребенка. какая разница между ними, если они одинаковые? Может быть, вам нужно объединить их? Я предлагаю вам убедиться, что это хороший путь, прежде чем идти дальше, потому что это может привести к осложнениям на этом пути.
Однако, для кода, который вы предоставили сейчас, вы можете сделать следующее:
def get_child_or_parent(some_id):
try:
obj = Child.objects.get(id=some_id)
except:
obj = Parent.object.get(id=some_id)
return obj
or
def get_child_or_parent(some_id):
obj = Child.objects.filter(id=some_id)
if obj.exists():
return obj.first()
obj = Parent.objects.get(id=some_id)
return obj
если вы используете вторую реализацию, вы также можете попробовать использовать get_object_or_404 . таким образом, он будет автоматически перенаправлять на страницу 404, если нет ни родителя, ни ребенка с таким id. (ссылка на документацию)