鑑於以下車型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