鉴于以下车型Django的模型查询恢复参照过滤混乱
class Category(models.Model):
name = models.CharField(max_length=50)
class Business(models.Model):
name = models.CharField(max_length=50)
category = models.ForeignKey(Category, related_name="businesses")
class Package(models.Model):
business_id = models.ForeignKey(Business)
status = models.CharField(max_length=50)
我有2个以下查询获得的业务,哪些包是活的类别列表:
filter_businesses = Business.objects.filter(package__status = 'live')
filter_categories = Category.objects.filter(businesses__package__status = 'live')
现在的问题是,鉴于相关名称“企业”应该等于category.business_set,为什么不应该在第一个查询中的过滤器是package_set?
关闭。你的意思是'..._set.all()'在最后一个。 – 2012-03-14 04:33:17
@ IgnacioVazquez-Abrams:你是对的,'..._set'是一个管理器(比如'SomeModel.objects'),而不是查询集 - 为简单起见省略了细节。 – 2012-03-14 04:53:02
对不起,也许我没有更清楚地解释我的问题,解释起来很复杂......我知道XX_set和related_name是指经理,我想问的是在第一个查询中为什么不使用(package_set__status ='live' )给出第二个工作查询(business__package__status ='live'),这很令人困惑,因为第二个查询引用了manager(由related_name),但第一个查询不是...... – 2012-03-14 08:03:12