0
私は任意の外部キーを持つDjangoモデルを持っています。このようにテーブルを設定すると、テーブルにはデフォルトの別のservice_types
というオプションが含まれますが、controller
の外部キーを指定することでこのオプションをオーバーライドできます。デフォルトオプションのDjangoモデルマネージャ
私はこのようなコードの束を持っている:
try:
modeService = RegressionServices.objects.get(controller=controller, service_type=SERVICE_TYPE_CONTROLLER_MODE)
except RegressionServices.DoesNotExist:
modeService = RegressionServices.objects.get(service_type=SERVICE_TYPE_CONTROLLER_MODE)
私は1つのコールにこれをダウン削減したいと私はDjangoのモデルManager
を行う方法であるべきだと思いますそう。本質的にはコントローラが**kwargs
であるかどうかをチェックし、存在する場合は基本的に上記のコードを実行します。私はドキュメントを見て、get_query_set
メソッドが通常はオーバーライドされていることを確認しています。 get()
メソッドをオーバーライドすることはできますか?モデルマネージャget()
の方法でRegressionServices
モデルにアクセスすることはできますか?
誰かがモデルマネージャ以外の方法を考えることができますか?
'' RegressionServices''に、コントローラFKと1つではなく、 '' MultipleObjectsReturned''例外がスローされるので、動作しない同じサービスタイプの2つのエントリがあります。 – Randy
複数のオブジェクトが返される可能性がある場合は、 'get'を使用したり例外をキャッチしたりしないでください。あなたのケースでは、少なくとも1つの項目が返されたことを保証するために、おそらく制限を課すために添字構文を持つ 'filter'を使うべきです(例えば、' RegressionServices.objects.filter(...)[0] ') 。 –