通过.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.name
和 getattr(model_object, field.name)
來取得欄位名稱和值
我回答過的問題: Python-QA