我完全是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
答案 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>'},
]