Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按子类类型筛选_Python_Django_Polymorphism_Django Queryset - Fatal编程技术网

Python 按子类类型筛选

Python 按子类类型筛选,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

假设我们有一个class
Place
,其中一个class
Restaurant
继承自它:

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模型继承的更多信息