[解決済み] Django が関連オブジェクトが存在するかどうかをチェックするエラー。関連オブジェクトは存在しません。
2023-01-15 14:31:42
質問
あるメソッド
has_related_object
があり、関連オブジェクトが存在するかどうかをチェックする必要があります。
class Business(base):
name = models.CharField(max_length=100, blank=True, null=True)
def has_related_object(self):
return (self.customers is not None) and (self.car is not None)
class Customer(base):
name = models.CharField(max_length=100, blank=True, null=True)
person = models.OneToOneField('Business', related_name="customer")
でも、エラーが出ます。
ビジネス.has_related_object()
RelatedObjectDoesNotExistです。ビジネスには顧客がいません。
どのように解決するのですか?
これは、ORM がデータベースにアクセスして
customer
が存在するかどうかを確認するためです。存在しないので、例外を発生させます。
メソッドを以下のように変更する必要があります。
def has_related_object(self):
has_customer = False
try:
has_customer = (self.customers is not None)
except Customer.DoesNotExist:
pass
return has_customer and (self.car is not None)
の状況が分からないので
self.car
の状況を知らないので、必要であれば調整するのはお任せします。
余談ですが
もしあなたがこれを
Model
を持つ
ForeignKeyField
または
OneToOneField
をつけると、データベースへの問い合わせを避けるためのショートカットとして、以下のようなことができるようになります。
def has_business(self):
return self.business_id is not None
関連
-
[解決済み] 与えられたキーがすでに辞書に存在するかどうかをチェックする
-
[解決済み] 変数が存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] リストに値が存在するかどうかを確認する最速の方法
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Django filter queryset __in for *every* item in list
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。