所以我想进入Python和Django的世界。来自PHP,很多东西都很相似,但我很难搞清楚如何做到以下几点。
在PHP中我会这样做:
$q = $this->db->query('SELECT * FROM data');
foreach ($q->result_array() as $key => $value) {
switch ($key) {
[...]
}
}
现在,我的问题是:如何在Django / Python中完成类似的操作? 我有这个设置:
from index.models import Foo
def index(request):
datalist = Foo.objects.get(id=1)
然后是什么?
答案 0 :(得分:2)
注意:您的PHP代码段中的查询甚至与您开始使用的Django代码段中的查询不匹配。 PHP的一个SELECT * FROM data
,但Python的一个SELECT * FROM data WHERE id = 1
,所以我要继续假设您打算Foo.objects.all()
而不是Foo.objects.get(id=1)
。如果你没有,那么请修复你的问题,并简单地删除下面代码片段的循环部分。此外,你应该找到一个更好的名称变量datalist
,如果它只包含一个项目而不是列表,顾名思义,这对我来说是一个混乱的源头。
您还没有真正清楚地描述您的目标是什么,但这里有一些可能符合您需求的选项:
for obj in datalist:
print "%s => %s" % (obj.id, obj)
...或者如果你想迭代所有对象的所有键值对:
for obj in datalist:
print "OBJECT %s" % obj.id
for field in Foo._meta.fields:
print " %s => %s" % (field.name, getattr(obj, field.name)
...或者您可以使用django.forms.models.model_to_dict
帮助器将对象转换为字典:
from django.forms.models import model_to_dict
for obj in datalist:
print "OBJECT %s" % obj.id
for key, value in model_to_dict(obj_as_dict).items():
print " %s => %s" % (key, value)