-1

所以我正在尝试进入 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)

然后什么?

4

1 回答 1

2

注意:您的 PHP 代码段中的查询甚至与您的 Django 代码段中的查询都不匹配。PHP 执行 aSELECT * FROM data但 Python 执行 a 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)
于 2013-10-07T15:00:30.957 回答