COBAKURA.COM

Django OneToOneFieldが存在するかをチェックする方法

DjangoでOneToOneFieldを参照するとき、参照先のデータがないと RelatedObjectDoesNotExist が発生してしまう。

models.py
class User(Model):
    ...

class Profile(Model):
    user = models.OneToOneField("User", related_name="profile",)

こんな感じで存在チェックはできない。(profileデータがないと例外が発生する。)

if user.profile:

例外をキャッチすれば判定できるけど、

try:
    user.profile
    return True
except user._meta.model.profile.RelatedObjectDoesNotExist:
    return False

hasattr を使った方が簡潔。

return hasattr(user, "profile")

おすすめ記事

2023/11/15

Git 特定のコミットからブランチを切る方法

2023/8/10

Djangoでエポック秒(unix秒)をテンプレートで表示

2023/7/4

Djangoのtimezone、localtime、make_awareを理解する

2023/3/6

Django 文字列の長さでクエリセットをフィルタする

2023/2/27

Django 特定のクエリパラメーターだけを更新するリンクの作り方

2023/1/27

Django 特定のフィールドが更新されたかを判定する方法