2

我正在编写一个基本函数,它接受三个参数,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

它将传递“字段”所在的字符串。当然,字符串不能放在那里。

那么我怎样才能实现一个几乎完全像这样工作并返回一个结果的函数呢?

谢谢!

4

1 回答 1

4

这可以使用getattrPython 内置函数来完成:

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
于 2013-11-08T20:47:09.353 回答