3

それが私が連絡先を問い合わせる方法です:

contacts = Contact.all()

次に、連絡先が次の構造の個人であるか会社であるかを判断するにはどうすればよいですか?

class Contact(polymodel.PolyModel):
    phone_number = db.PhoneNumberProperty()
    address = db.PostalAddressProperty()

class Person(Contact):
    first_name = db.StringProperty()
    last_name = db.StringProperty()
    mobile_number = db.PhoneNumberProperty()

class Company(Contact):
    name = db.StringProperty()
    fax_number = db.PhoneNumberProperty()
4

2 に答える 2

1

PolyModelクラスメソッドを使用できますclass_name()。App Engine のドキュメントからの引用:

PolyModel.class_name()

クラスの名前を返します。Python クラスの名前が変更された場合、クラスはこのメソッドをオーバーライドできますが、エンティティは元のクラス名を引き続き使用する必要があります。

コードで、次のように 2 つのオブジェクトを挿入するとします。

p = Person(first_name='John',
           last_name='Doe',
           mobile_number='1-111-111-1111')
p.put()
        
c = Company(name='My company',
            fax_number='1-222-222-2222')
c.put()

次に、すべてのオブジェクトを取得し、次を実行してクラス名を出力します。

for c in Contact.all():
    logging.info('Class Name: ' + c.class_name())

出力:

クラス名: 人

クラス名: 会社

PolyModel クラスの詳細については、PolyModel クラスを参照してください

于 2012-11-10T18:05:55.660 に答える
1

さまざまな方法で種類とクラス名を取得できます

instance._class戻ります['Contact', 'Person']

instance.class_name()戻り値Person

instance.kind()戻り値Contact

于 2012-11-10T17:30:52.507 に答える