这就是我查询联系人的方式:
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()
答案 0 :(得分:1)
你可以用不同的方式获得种类和类名
instance._class
将返回['Contact', 'Person']
instance.class_name()
返回Person
instance.kind()
返回Contact
答案 1 :(得分:1)
您可以使用PolyModel
类方法class_name()
。引用App Engine文档:
PolyModel.class_name()
返回类的名称。如果Python类的名称发生更改,则类可以重写此方法,但实体应继续使用原始类名。
在您的代码中,如果插入两个对象,如下所示:
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类的信息,请查看The PolyModel Class