Python / Django新手尝试将两个列表组合到字典中

时间:2014-09-23 17:56:38

标签: python django list dictionary django-forms

完全是python和django的新手,所以请原谅我,如果这看起来像一个愚蠢的问题。我有一种感觉,即使我知道我希望结果如何,我也不明白我在做什么。

我需要一个包含两组内容的词典,为简单起见,我只想说下面的键对应一个已经工作的查询 - 这些是字段名称。我想要发生的是预先填充Django ModelForm,其中的数据最终会出现在名为 values 的列表中  下面。获取值的数据非常有效。我想要字典的唯一原因是因为这是Django ModelForm想要传递给它的内容,以便让我的初始数据供用户更改或接受。我相信我会被绊倒,因为这是我第一次处理字典,特别是在django下的python中。我已经研究过使用dict zip技术并且它运行没有错误,但是一切都最终被绑定到我称之为名称的键,当然它来自数据库表的字段名称。

如果我输入导入pdb; pdb.set_trace就在我的return语句之前,并向调试器询问这里的数据是什么:

{'name': ['IB Report', 'IB Daily Report', 'Add description']}

有人能让我走上正确的道路吗?

def mysql_ser_reports_mgmt(id):

    keys = ['name','subject','description']
    values = []

    for report in Report.objects.filter(id=id):
       values.append([str(report.name), str(report.subject), str(report.description)])

    data = dict(zip(keys,values))

    return data

1 个答案:

答案 0 :(得分:0)

Django已经有了一个过滤方法,可以满足您的需求。 Look into values()

所以,你会这样做:

return Report.objects.filter(id=id).values('name', 'subject', 'description')

输出将是这样的:

[{'name': 'name', 'subject': '<Subject>', 'description': '<Description>'},
 {'name': 'name2', 'subject': '<Subject2>', 'description': '<Description2>'},
]