-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 のものは を行いますSELECT * FROM dataが、Python のものは を行いSELECT * FROM data WHERE id = 1ます。そうでない場合は、質問を修正し、以下のコード スニペットのループ部分を削除してください。また、名前が示すようにリストではなく 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 に答える