2012-04-27 13 views
7

Ho un modello come questo, come posso passarlo attraverso e non dover digitare company.id, company.name, etc?come faccio a scorrere i campi di un oggetto?

class Company(models.Model): 
    name = models.CharField(max_length=1000) 
    website = models.CharField(max_length=1000) 
    email = models.CharField(max_length=200) 
    phone_number = models.CharField(max_length=100) 
    city = models.CharField(max_length=1000) 
    zip = models.IntegerField() 
    state = models.CharField(max_length=1000) 
    address = models.CharField(max_length=1000) 
    address2 = models.CharField(max_length=1000) 
+0

Per fare cosa? Assegnare a loro? Usali? –

+0

possibile duplicato di [Django - Iterate su modelli di campi di istanze del modello e valori nel modello] (http://stackoverflow.com/questions/2170228/django-iterate-over-model-stance-field-names-and-values-in -modello) – miku

risposta

3

Prima get them, quindi utilizzare un ciclo for o di lista.

1

questa è una possibile soluzione:

entity = Company.all().get() 

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

un altro potrebbe essere:

# this returns a dict with the property 
# name as key and the property val as its value 
entity.__dict__.get('_entity') 
20

È possibile un ciclo su tutti i nomi di campo in questo modo

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

questo funziona anche se si avere un'istanza di categoria:

c = Company(name="foo",website="bar",email="[email protected]",....,) 
c.save() 
for field in c._meta.get_all_field_names(): 
    print getattr(c, field, None) 

Aggiornamento per Django 1.8

Django 1.8 ha ora un official model Meta api e si può facilmente afferrare tutti i campi:

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

Iterazione in un vista:

Se avere un'istanza company di Company:

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