私は、既知のルックアップタイプを使ってモデルに問い合わせるためにaを書きました。入力タイプが何であるかを示すフラグは、kwargs
として渡されます。 kwarg
ルックアップは、以下のように、渡されたkwargsとともに説明されています。DRYに違反しないようにdjangoクエリを使用するリファクタリング方法?
- データベースハッシュオブジェクトの(ランダムない
db_hash=True
と、インスタンスに固有の)オブジェクトの - 名前(「ジョン」又は
name=True
として「サム」) - ID。私が欲しい
self.check_all_routes("Sam", "452", name=True)
、単にメソッドの呼び出しは次のようになり名例えば
(いずれかのフラグなしOBJS)
124
、または134
id=True
などをobj.ids) DRYに違反している間に発生している混乱を減らすための以下の方法をリファクタリングします。 def check_all_routes(self, driver, route, **kwargs):
_hash = kwargs.get('db_hash')
_name = kwargs.get('name')
_id = kwargs.get('id')
if _hash:
return self.model.objects.filter(
driver__db_hash=driver,
route__db_hash=route
).prefetch_related().select_related().values_list('route_number')
if _name:
return self.model.objects.filter(
driver__name=driver,
route__name=route
).prefetch_related().select_related().values_list('route_number')
if _id:
return self.model.objects.filter(
driver_id=driver,
route_id=route
).prefetch_related().select_related().values_list('route_number')
return self.model.objects.filter(
driver=driver,
route=route
).prefetch_related().select_related().values_list('route_number')
DRYに違反しないようにするために行うことができます。
kwargsの1つのみがTrueになることはできますか? –