我正在编写一个基本函数,它接受三个参数,request,field和user_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]
#return result.??????
我不知道该怎么做是用那些返回相应列的问题替换那些问号。如果我试试
return result.field
它将传递“field”所在的字符串。当然,字符串不能放在那里。
那么我怎样才能实现一个与此完全相同的函数并返回一个结果呢?
谢谢!
答案 0 :(得分:4)
这可以使用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