2012-04-27 3 views
7

나는 이와 같은 모델을 가지고 있는데 어떻게 루프 할 수 있으며 company.id, company.name 등을 입력 할 필요가 없습니까?개체의 필드를 반복하는 방법은 무엇입니까?

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

무엇을 할 수 있습니까? 그들에게 할당? 그것을 써? –

+0

[Django - 템플릿의 모델 인스턴스 필드 이름과 값을 반복 할 수 있습니다.] (http://stackoverflow.com/questions/2170228/django-iterate-over-model-instance-field-names-and-values-in) -주형) – miku

답변

3

첫 번째 get them은 for 루프 또는 목록 이해를 사용합니다.

1

이 가능한 솔루션입니다 :

entity = Company.all().get() 

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

다른 하나가 될 수있다 :

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

당신은 너무

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

같은 모든 필드 이름을 통해 루프이 또한 경우에 작동 할 수 있습니다 카테고리 인스턴스 있음 :

장고 1.8

장고 1.

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) 

업데이트 이제 official model Meta api 가지고 있으며, 당신은 쉽게 모든 필드 잡을 수

당신 않으면 다음 단계 보기에서

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

반복을 인스턴스가 company이고 Company :

fields= company.__dict__ 
for field, value in fields.items(): 
    print field, value 
관련 문제