私は現在、automagic djangoモデルのインスタンシエータを作成しようとしています。この関数はいくつかの引数をとり、いくつかのdjangoモデルをインスタンス化し、いくつかの外部キーをリンクして、たくさんを保存し、メインモデルを私に返します。これはすべて正常ですが、最終的には関数は4つの通常の引数と2つのタプル(contenttype名と異なる関数呼び出しの引数配列で埋められます)をとります。ボイラープレート機能で引数の量を減らすことは可能ですか?
これはデフ次の関数につながる:
def create_rule(profile, lifestyles, bool, title, input, output):
rule = Rule.objects.create(
user_profile=profile,
lifestyles=lifestyles,
bool=bool,
title=title,
)
models = ContentType.objects.filter(app_label="rules")
input_cls = models.get(model=input[0]).model_class()
input_cls.objects.create(*input[1], rule=rule)
output_cls = models.get(model=output[0]).model_class()
output_cls.objects.create(*output[1], rule=rule)
return rule
平均関数呼び出しは少しこのようなものになります。
create_rule(profile, '1,3,6,7', 1, "Switch off when 5:00",
('eventruleinput', [5, 'start']),
('propruleoutput', [35, 'Switch', 0]))
は、引数の量を減らすための良い方法はありますI私は本当に私は推測しないで使用していますか?この関数呼び出しを構造化するより良い方法はありますか?私はこれを完全に間違った方法でやっていますか?
注:これはモックアップの実装に過ぎません。私はこのような問題にアプローチしたいと思っています。
それが自動化されている場合設定ファイルからパラメータを受け取るコードの場合、問題はありませんが、これらのパラメータを記述しなければならないプログラマなら、それは正解(IMHO)ではないかもしれません。私はここで私の頭の上に行く場合はpythonので申し訳ありません。 –