3
我正在寫一個畫廊字段。該字段的子類ManyToManyField
並添加了自己的ajax控件和內容。我想讓這個解決方案儘可能緊湊(我的意思是 - 如果可能,我想寫一點代碼在其他項目中重新實現)。Django ManyToMany通用「通過」模型
我決定創建一箇中間表(即提供「通過」參數ManyToManyField
),將舉行訂貨信息:
class IntermediateModel(models.Model):
from_content_type = models.ForeignKey(ContentType)
from_object_id = models.PositiveIntegerField()
from_content_object = generic.GenericForeignKey('from_content_type', 'from_object_id')
to_content_type = models.ForeignKey(ContentType)
to_object_id = models.PositiveIntegerField()
to_content_object = generic.GenericForeignKey('to_content_type', 'to_object_id')
order = models.PositiveIntegerField()
將出現下列問題:
- 是有可能在django中有一個通過m2m的「through」模型,這兩個模式的外鍵都指向一個通用關係(如上面那樣)?如果是這樣 - 如何實現這一目標?
- 如果可以做到這一點 - 這樣的模型可以保持超過一個m2m字段之間的通用關係嗎? Like:類< - >中級< - >學生,圖庫< - >中級< - >照片 - 兩種都使用Intermediate作爲'through'模型?
- 編輯:剛剛測試 - 我可以;)我可以使用抽象類與「通過」表?我想通了 - 如果上述複雜的方案將不會工作,我可以只創建一個提供訂貨兩個抽象類和一些其他的東西,然後總是創造正常的子類,以真正建立一些關係:)
我想在中間模型中有訂單字段。我想創建一個通用的plug'n'play GalleryField。具有泛型中間模型會讓我省下一些沉重的元類修補(自動創建中間表)。以下是實現此目的的一些基本步驟(imaging.fields.GalleryField和imaging.models中的模型摘要)https://github.com/pielgrzym/django-imaging.git – pielgrzym