按子类类型筛选

2024-09-29 01:29:36 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个类Place,它继承了一个类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)

如果我有一个与地点相关的类Tag

class Tag(models.Model):
    name = models.CharField(max_length=50)
    tagged = models.ManyToManyField(Place, related_name="tags")

对于一个给定的标签,我如何得到一个查询集来选择所有有这个标签的餐馆,而不是其他种类的地方?你知道吗


Tags: namefalsedefaultmodelmodelstagplace标签
1条回答
网友
1楼 · 发布于 2024-09-29 01:29:36

最简单的方法是从Restaurant.objects调用filter,如下所示:

Restaurant.objects.filter(tags=tag)

但是如果您想从Place.objects调用filter,您必须在父模型中使用Django多态性应用程序之一,例如Django-Polymorphic,因为Django在默认情况下不支持模型多态性。你知道吗

注意:阅读This article关于OOP多态性&;This article了解有关Django模型继承的更多信息。你知道吗

相关问题 更多 >