[Solved]-How do i loop through fields of an object?


First get them, then use a for loop or list comprehension.


You can loop over all field names like so

for name in Company._meta.get_all_field_names():
    print name

this also works if you have a category instance:

c = Company(name="foo",website="bar",email="baz@qux.com",....,)
for field in c._meta.get_all_field_names():
    print getattr(c, field, None)

Update for Django 1.8

Django 1.8 now has an official model Meta api and you can easily grab all the fields:

from django.contrib.auth.models import User
for field in User._meta.get_fields():
    print field


Iteration in a view:

If you have an instance company of Company:

fields= company.__dict__
for field, value in fields.items():
    print field, value


this is a possible solution:

entity = Company.all().get()

for propname, prop in entity.properties().items():   
    print propname, prop.get_value_for_datastore(entity)

another one could be:

# this returns a dict with the property 
# name as key and the property val as its value

Leave a comment