The following SQLAlchemy code works, but looks un-pythonic:
if has_died: # has_died: True or False
query = query.filter(User.died_at != None)
else:
query = query.filter(User.died_at == None)
What is a more elegant way to add the filter?
The following SQLAlchemy code works, but looks un-pythonic:
if has_died: # has_died: True or False
query = query.filter(User.died_at != None)
else:
query = query.filter(User.died_at == None)
What is a more elegant way to add the filter?
Well, you could do this:
query = query.filter((User.died_at != None) if has_died else (User.died_at == None))
But it's a bit hard to read. I think how you're doing it is fine.
You could rewrite it as one line with a ternary operator
query = query.filter((User.died_at != None) if has_died else (User.died_at == None))
What about:
query = query.filter(bool(User.died_at) == has_died)
It returns:
False
if User.died_at
is None
and has_died
is True
True
if User.died_at
is None
and has_died
is False
True
if User.died_at
is not None
and has_died
is True
False
if User.died_at
is not None
and has_died
is False
Which is the intended behavior...
But then again, not sure if it is easier to understand than your piece of code!