python - 使用命名参数作为变量

标签 python django

我正在使用 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' 和 m1urlconf 传递到我的 get 函数(它实际上是我的 View 类中的一个 get 方法)。 我能否在不使用 if else if 链的情况下控制变量 death_year 的名称值(即使其成为 death_monthbirth_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/

相关文章:

python - 迁移到 pygobject、glade 和 gtk3 时使用入口组合框

python - django-评级错误: Unknown column 'resources_resources.ratings_votes' in 'field list'

javascript - Django,更新部分页面

python - 在 python 中处理列表

python - pip 如何知道 virtualenv 以及在哪里安装包

python - 为命令添加冷却时间[Discord.py]

python - Python线程启动开始时间

python - 使用字典在模型中创建对象时出现 Django TypeError

python - django 中的 LDAP 身份验证错误

python - 连接到 Django 查询中的新字段