0
一個小問題最有用的Django框架的約一:Django和網站的關係框架鏈接
django.contrib.sites
假設我有一個模型:
class MyModel(models.Model):
info = models.TextField()
site = models.ManyToManyField(Site)
objects = models.Manager()
on_site = CurrentSiteManager()
和另一種模式,那就是掛如上所示:
class MyModelSupplement(models.Model):
info = models.TextField()
parent_model = models.ForeignKey(MyModel)
Scheme指定,MyModelSupplement不能屬於站點,它是par恩不屬於。具有這種結構
我可以訪問爲MyModel對象的給定站點上簡單地通過調用
MyModel.on_site.all()代碼。在 MyModelSupplement模型上實現相同的最佳方法是什麼?
我能想到的一些方法來解決這個問題:
- 把相同網站領域MyModelSupplement和定義相同CurrentSiteManager(將不是有點多餘?)
- 使用
MyModelSupplement.objects.filter(parent_model__site__id = some_site_id)
MyModel.on_site.all().values_list('mymodelsupplement')
my_models = MyModel.on_site.all() my_models_supplements = MyModelSupplements.objects.filter(parent_model__in=my_models).select_related()
有沒有更好的方法來完成上述任務?需要說明的是,我需要同時訪問這兩個模型並分別嘗試檢索尊重給定站點的實例嗎?
也許有這樣一種說法:從MyModel
的所有SiteID值應在MyModelSupplement
。如果從MyModel
實例中刪除了SiteID值,則應將其從所有MyModelSupplements
中刪除,這些值與具有ManyToMany關係的受尊重的MyModel
實例相關。
這是可以實現的嗎?
'mymodelsupplement.parent_model.site.all()'? – 2013-03-21 13:20:04
當我需要MyModelSupplements實例時,這將會檢索parent_model(本例中爲MyModel)實例。甚至不知道你的行是否可以工作,從MyModelSupplement類調用(不是實例)。 – 2013-03-21 13:24:31