Python 按子类类型筛选
假设我们有一个classPython 按子类类型筛选,python,django,polymorphism,django-queryset,Python,Django,Polymorphism,Django Queryset,假设我们有一个classPlace,其中一个classRestaurant继承自它: from django.db import models class Place(models.Model): name = models.CharField(max_length=50) address = models.CharField(max_length=80) class Restaurant(Place): serves_hot_dogs = models.Boolea
Place
,其中一个classRestaurant
继承自它:
from django.db import models
class Place(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
class Restaurant(Place):
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)
如果我有一个与地点相关的class标签
:
class Tag(models.Model):
name = models.CharField(max_length=50)
tagged = models.ManyToManyField(Place, related_name="tags")
对于给定的标记,如何获得一个查询集,选择所有具有此标记的餐厅,但不选择其他类型的餐厅?最简单的方法是从
餐厅调用过滤器
Restaurant.objects.filter(tags=tag)
但是,如果要从Place.objects
调用过滤器
,则必须使用Django多态性应用程序之一,例如在父模型中,因为Django默认不支持模型多态性
注意:阅读OOP多态性&了解关于Django模型继承的更多信息