Jam*_*mie 5 django inheritance foreign-key-relationship
我欢迎任何有关我的问题的帮助。我试图在多表继承情况下将关系向后跟踪到子类。
即我想要一个特定州所有餐馆的查询集。
这是我的问题的一个简化示例(对 django 文档中的eg进行修改);
from django.db import models
class Place(models.Model):
state = models.ForeignKey('State')
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 State(models.Model):
state = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
如果我尝试,state.restaurant_set.all()我会收到异常
“State”对象没有属性“Restaurant_set”
但是,如果我尝试 state.place_set.all(),我会收到该州的一组地点查询,但我真的只想要该州的餐馆。
任何人都可以提供一些关于如何正确制定我的查询集的建议,或者提供一些关于如何实现这一目标的其他想法?
任何帮助将不胜感激
在您的Place模型中,您已经定义了一个外键State,从而可以使用语句进行反向查找state.place_set.all()。相反,您的Restaurant模型中没有任何指向的外键State,因此您将无法运行反向查找。
Restaurant您应该在指向中添加一个外键Place,以便您能够从州获取地点,然后从地点获取餐馆。或者可能更好的是,其中的多对多关系Place指向Restaurant,这样反向查找State就会容易得多。
但要小心,因为此类查询往往非常昂贵,并且您可能需要通过使用select_lated和prefetch_lated语句来调整获取内容的方式
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |