Django:在结果中填充用户可选的数据库字段

时间:2018-09-19 00:01:40

标签: django django-models django-rest-framework

我有一个很大的Django数据库表,其中有50多个列。我从用户(在数组中)获取输入,他希望在搜索结果中查看哪些列。我无法将用户选择的列映射到数据库。

        ticker_details = ticker_quotes.objects.filter(mkt_cap__lte = float(20))[:100]
        if(len(ticker_details) > 0):
        # print("length: ",len(data))
        for item in ticker_details:
            try:
                history[(item.symbol_id)] = {"title" : item.symbol_id, "change" : item.change} # How to select the database column using variable
            except:
                pass
        self.context["detail"] =  history

在上面的代码中,我想根据用户输入选择列,但是当我尝试使用字符串变量访问列名时出现错误。

1 个答案:

答案 0 :(得分:0)

我得到了答案。我们可以使用getattr(model,fieldtoget)python函数。

上面的代码如下:

ticker_details = ticker_quotes.objects.filter(mkt_cap__lte = float(20))[:100]
    if(len(ticker_details) > 0):
    # print("length: ",len(data))
    for item in ticker_details:
        try:
            history[(item.symbol_id)] = {"title" : item.symbol_id, "change" : getattr(item, "change")} # 
        except:
            pass
    self.context["detail"] =  history