首页 > django可以for循环获取数据表一行的每一列值么?

django可以for循环获取数据表一行的每一列值么?

通过.objects.get()我已经得到了我想要的那一列数据对象,现在我想通过for循环得到这行数据的每一列值,而不是"对象.列名"的方式,因为列有五十多列。


給個範例:

myapp/models.py

from django.db import models

class MyModel(models.Model):

    a = models.CharField()
    b = models.CharField()
    c = models.CharField()
    d = models.CharField()

in Django shell:

In [3]: from myapp.models import MyModel

In [4]: m = MyModel(a='a', b='b', c='c', d='d')

In [5]: m
Out[5]: <MyModel: MyModel object>

In [6]: m._meta
Out[6]: <Options for MyModel>

In [7]: m._meta.get_fields
Out[7]: <bound method Options.get_fields of <Options for MyModel>>

In [8]: m._meta.get_fields()
Out[8]: 
(<django.db.models.fields.AutoField: id>,
 <django.db.models.fields.CharField: a>,
 <django.db.models.fields.CharField: b>,
 <django.db.models.fields.CharField: c>,
 <django.db.models.fields.CharField: d>)

In [9]: for f in m._meta.get_fields():
   ...:     print(f.name, getattr(m, f.name))
   ...:     
id None
a a
b b
c c
d d

主要是 _meta 裡面有 get_fields(), 可以拿到 model 裡面所有的 fields
然後透過 field.namegetattr(model_object, field.name) 來取得欄位名稱和值


我回答過的問題: Python-QA

【热门文章】
【热门文章】