Django中多表继承的情况下,基模型的多态查询可能吗



即我们有

class Place(models.Model):...
class Restaurant(Place):...
class Cafe(Place):...

我想以某种方式查询Place

q = Place.objects.all() # how?

但对于q[x],我不希望有Place类实例,而是RestaurantCafe(真正存储的是什么(,所以我可以调用模型类的一些多态方法。可能的

只有将查询放在父类上,才能获得父类的实例,但根据Django关于多表继承的文档:

继承关系引入子模型之间的链接以及它的每个父代(经由自动创建的OneToOneField(。

因此,您可以通过restaurantcafe相关名称访问RestaurantCafe实例:

for place in Place.objects.all():
try:
restaurant = place.restaurant
except Restaurant.DoesNotExist:
restaurant = None
try:
cafe = place.cafe
except Cafe.DoesNotExist:
cafe = None

相关内容

  • 没有找到相关文章

最新更新