如何通过字符串标识列名?django/python
我正在编写一个基本函数,它包含三个参数:请求、字段和用户id。 其思想是,当您传递信息时,函数返回的结果将是列(由参数“field”标识)、行(由参数“user_id”标识)。 这是我的职责:如何通过字符串标识列名?django/python,python,django,Python,Django,我正在编写一个基本函数,它包含三个参数:请求、字段和用户id。 其思想是,当您传递信息时,函数返回的结果将是列(由参数“field”标识)、行(由参数“user_id”标识)。 这是我的职责: def get_user_field(request, user_id, field): result = Users.objects.raw("SELECT id, %s FROM blog_users WHERE id = %s", [field, user_id])[0] #retu
def get_user_field(request, user_id, field):
result = Users.objects.raw("SELECT id, %s FROM blog_users WHERE id = %s", [field, user_id])[0]
#return result.??????
我不知道怎么做,就是用返回相应列的内容替换那些问号。如果我尝试
return result.field
它将传递“field”所在的字符串。当然,绳子不能放在那里
那么,我如何实现一个函数,它的工作原理与此非常相似,并返回一个结果呢
谢谢 这可以通过
getattr
Python内置实现:
return getattr(result, field)
但最好完全不同:
def get_user_field(request, user_id, field):
return User.objects.filter(id=user_id).values_list(field, flat=True)[0]
或者,考虑到用户不存在的可能性:
def get_user_field(request, user_id, field):
result = User.objects.filter(id=user_id).values_list(field, flat=True)
if result:
return result[0]
else:
return None # or raise an exception or whatever you like
这可以通过Python内置的
getattr
Python来完成:
return getattr(result, field)
但最好完全不同:
def get_user_field(request, user_id, field):
return User.objects.filter(id=user_id).values_list(field, flat=True)[0]
或者,考虑到用户不存在的可能性:
def get_user_field(request, user_id, field):
result = User.objects.filter(id=user_id).values_list(field, flat=True)
if result:
return result[0]
else:
return None # or raise an exception or whatever you like
我的Django有点生锈,但它很可能是
getattr(result,field)
。工作得很完美。非常感谢。我的Django有点生锈,但它很可能是getattr(result,field)
。工作得很完美。非常感谢。