2017-09-05 129 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]