2012-04-27 22 views
7

Böyle bir modelim var, bunun üzerinden nasıl dönebilirim ve company.id, company.name, vb.Bir nesnenin alanlarından nasıl geçebilirim?

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

Ne yapmak için? Onlara atayım mı? Onları kullan? –

+0

[Django - Model örneği alan adları ve şablondaki değerler üzerinde yineleme] olası bir kopyası (http://stackoverflow.com/questions/2170228/django-iterate-over-model-instance-field-names-and-values-in -template) – miku

cevap

3

İlk get them ardından döngü veya liste anlama için kullanın.

1

bu olası çözüm:

entity = Company.all().get() 

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

başka biri olabilir:

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

Çok

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

gibi tüm alan adları üzerinde döngü bu da sizin çalışır yapabilirsiniz Bir kategori örneğiniz var:

Django 1.8

Django 1.8 için

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) 

Şimdi güncelle bir official model Meta api sahiptir ve kolayca tüm alanları yakalayabilir:

Eğer: Bir görünümde yılında

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

Yineleme Company numaralı bir company numaralı örneğe sahip olmak:

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