我正在使用 django,但我认为这个问题主要属于 Python 本身。
我有这样的东西:
def get(self, request, arg, *args, **kwargs):
if kwargs['m0'] == 'death':
if kwargs['m1'] == 'year':
result = Artists.objects.filter(death_year=arg)
elif kwargs['m1'] == 'month':
result = Artists.objects.filter(death_month=arg)
elif kwargs['m1'] == 'day':
result = Artists.objects.filter(death_day=arg)
elif kwargs['m0'] == 'birth':
if kwargs['m1'] == 'year':
result = Artists.objects.filter(birth_year=arg)
elif kwargs['m1'] == 'month':
result = Artists.objects.filter(birth_month=arg)
elif kwargs['m1'] == 'day':
result = Artists.objects.filter(birthh_day=arg)
death_year
是一个命名参数,它是我的模型 Artists
中的一个字段,表示我的数据库中的一个列。变量 'm0' 和 m1
从 urlconf
传递到我的 get 函数(它实际上是我的 View 类中的一个 get
方法)。
我能否在不使用 if else if 链的情况下控制变量 death_year
的名称值(即使其成为 death_month
或 birth_year
)?由于我有很多选择,因此我将不得不使用一个非常长的条件链,该条件链通向同一行,但具有不同的命名参数。
我强烈怀疑你是否应该理解整个问题来回答这个问题。最初的问题很简单:我可以在 Python 中使用命名参数及其对应的值作为变量吗?
最佳答案
据我所知,您可以构建 key ,然后传入一个 arg 来构建字典,然后将其包含在过滤器中
key = '%s_%s' % (kwargs['m0'], kwargs['m1'])
result = Artists.objects.filter(**{key: arg})
关于python - 使用命名参数作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367278/