Мне нужен 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. (ссылка на документацию)

Вернуться на верх