2017-09-05 7 views
0

文字列からfield_nameを入力します。これはPythonの可能性ですか?文字列パラメータからキーワード引数を取得するにはどうすればよいですか?

earliest = Model.objects.filter(
    field_name__year=latest_datetime.year, 
    field_name__month=latest_datetime.month, 
    field_name__day=latest_datetime.day 
).order_by(field_name)[0] 

私はこの機能があなたに少しわかってもらいたいと思っています。

def cool_function(field_name_from_param): 
    earliest = Model.objects.filter(
     field_name_from_param__year=latest_datetime.year, 
     field_name_from_param__month=latest_datetime.month, 
     field_name_from_param__day=latest_datetime.day 
    ).order_by(field_name_from_param)[0] 

答えて

0

あなたは、dict構築し、argument unpackingため**を使用することができます例えば:

def cool_function(field_name_from_param): 
    earliest = Model.objects.filter(
     **{field_name_from_param+"__year": latest_datetime.year, 
      field_name_from_param+"__month": latest_datetime.month, 
      field_name_from_param+"__day": latest_datetime.day} 
    ).order_by(field_name_from_param)[0] 
関連する問題