即我们有
class Place(models.Model):...
class Restaurant(Place):...
class Cafe(Place):...
我想以Place
某种方式查询:
q = Place.objects.all() # how?
但是因为q[x]
我不想有Place
类实例,Restaurant
而是Cafe
(真正存储的),所以我可以调用模型类的一些多态方法。可能的?
即我们有
class Place(models.Model):...
class Restaurant(Place):...
class Cafe(Place):...
我想以Place
某种方式查询:
q = Place.objects.all() # how?
但是因为q[x]
我不想有Place
类实例,Restaurant
而是Cafe
(真正存储的),所以我可以调用模型类的一些多态方法。可能的?
如果将查询放在父类上,则只能获取父类的实例,但根据 Django 关于多表继承的文档:
继承关系引入了子模型与其每个父模型之间的链接(通过自动创建的
OneToOneField
)。
因此,您可以通过和相关名称访问Restaurant
和Cafe
实例:restaurant
cafe
for place in Place.objects.all():
try:
restaurant = place.restaurant
except Restaurant.DoesNotExist:
restaurant = None
try:
cafe = place.cafe
except Cafe.DoesNotExist:
cafe = None