Django アプリケーション内に、リクエストを受け取ってパラメータを解析し、結果を辞書に返す関数があります。
たとえば、次のようなものです。
def parse_event_parameters(request):
"""
Parse the parameters for a given event
from a request and return the result
as a dictionary of strings.
"""
try:
request_params = {
'event_id': id,
'start_date': request.POST[id + '_start_date'],
'end_date': request.POST[id + '_end_date'],
'shift_type': request.POST[id + '_shift_type'],
'rec_type': request.POST[id + '_rec_type'],
'event_length': request.POST[id + '_event_length'],
'event_pid': request.POST[id + '_event_pid'],
}
except KeyError, err:
raise err
return request_params
次に、この辞書をモデル内のメソッドに渡して、問題のイベントを作成または更新します。
e.update(**parameters)
そこに到達すると、update メソッドは次のようにスーパー クラスを呼び出します。
super(Event, self).update(event_id, start_date,
end_date, shift_type, rec_type,
event_length, event_pid, employee_id)
スーパークラスは基本的にリクエストの値を検証し、モデルに保存します。ここで、モデルに別の列を追加し、各メソッドを更新する必要があります。
私は Django にかなり慣れていませんが、これは最もクリーンなアプローチとは思えません。
これにアプローチするよりエレガントな方法はありますか?各方法で辞書を保持し、開梱する必要はありませんか?