11

私はこのようなモデルを持っています。どうすればそれをループして、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)
4

4 に答える 4

24

次のようにすべてのフィールド名をループできます

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

これは、カテゴリ インスタンスがある場合にも機能します。

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

Django 1.8 の更新

Django 1.8 には公式モデルのメタ APIが含まれるようになり、すべてのフィールドを簡単に取得できます。

from django.contrib.auth.models import User
for field in User._meta.get_fields():
    print field
于 2012-04-28T03:53:52.427 に答える
8

ビューでの反復:

companyのインスタンスがある場合Company:

fields= company.__dict__
for field, value in fields.items():
    print field, value
于 2014-05-06T11:05:34.647 に答える
5

最初にそれらを取得してから、for ループまたはリスト内包表記を使用します。

于 2012-04-27T15:54:05.553 に答える
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') 
于 2012-04-27T16:20:48.487 に答える