4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DjangoでDBから取得したオブジェクトのnull判定をやりたかった話

Last updated at Posted at 2018-11-18

普段仕事でSeasar2という化石を扱っている人間がDjangoで遊んでる際、findByIdで取得したentityのnull判定を実装するときにとても悩んだからメモを残す

Seasar2のこんな感じの処理をDjangoで書きたかった。

hoge.java
entity = XXXService.findById(param1);
if (entity == null) {
    return false;
}

最初にDjangoのDBからの取得方法としてgetを使った実装をしていた。

hoge.py
entity = models.Entity.objects.get(colA == param1)

しかしこの方法では colA == param となるレコードがDBに存在しない場合にDoesNotExistが発生してしまう。
例外をキャッチして処理しても良いのだが、それはそれで何か個人的には好かない。

webでいろいろ調べていたら先人がいた
Djangoで空のクエリーセットをチェックする

ということは次のようにすればいけるのではとおもってやってみた

hoge2.py
querySet = models.Entity.objects.filter(colA == param)
if querySet.first() is None:
	return False

filterでQuerySetを取得した上で、単体ならfirst()とか複数ならlistに変換して処理するとよさそうだ。

4
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?