2017-09-05 164 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] 
相关问题