2012-04-27 9 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 

のようなすべてのフィールド名を超えるループをすることができますカテゴリインスタンスを持つ:

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) 

Djangoの1.8

の更新はDjango 1.8は今official model Meta apiを持っており、あなたは簡単にすべてのフィールドをつかむことができます。ビュー

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

反復:

あなたの場合インスタンスがcompanyCompany

fields= company.__dict__ 
for field, value in fields.items(): 
    print field, value 
関連する問題