我正在構建類似於stackoverflow使用的標記系統。標籤由名稱和與該標籤關聯的模型實例組成。我找不到任何關於如何聲明這種多對多關係的文檔。通常它只是ManyToMany(模型名稱),但我有很多模型,我想在這個集合中。有沒有人有任何可能有用的指針或資源?Django標記應用程序,定義異構ManyToMany關係
回答
您可以使用ContentType來執行此操作。甚至有一個在該頁面的文檔中使用標籤的例子。您可能無法使用典型的ManyToMany字段,而是創建一個帶標籤的模型,它具有一個用於標籤模型的ForeignKey和一個GenericForeignKey。
它確實給出了一個帶標籤項目的例子,但我認爲我對如何實現的想法可能有點不同。比如說有一個標籤「FOO」。在我提出的實現中,標籤'Foo'將成爲我表中的一個條目。它包含與引用此標記的所有模型實例的多對多關係。所以如果我想找到所有引用'FOO'的模型實例,我可以做Tag.objects.get(name ='FOO')。references.all()在文檔中的版本中,如果4個對象引用'FOO'標記,那麼tagged_item表中會有4個條目。 – Mike
多對多關係隱式地創建一個表,該關係的每一側都有一個外鍵。基本上,我說的是你需要顯式創建該表。你仍然可以有一個Tag表,但你也需要創建一個TaggedItem表。 – JeffS
- 1. 在Django中唯一標識ManyToMany關係
- 2. htsql django和manytomany的關係
- 3. Django模型關係(foreignkey)(manytomany)
- 4. Django ManyToMany通過關係
- 5. 如何使用Django ManyToMany關係的'reverse'?
- 6. Django應用程序體系結構
- 7. 將Django QuerySet與ManyToMany傳遞給自定義序列化程序
- 8. Django ManyToMany關係「包含」聲明
- 9. Django與其他字段的ManyToMany關係
- 10. Django - 如何過濾ManyToMany關係?
- 11. Django ManyToMany的關係不存在
- 12. Django從ManyToMany關係中刪除對象
- 13. 如何表達Django ManyToMany關係?
- 14. 基於ManyToMany關係過濾Django QuerySet
- 15. Django queryset的反向manytomany關係
- 16. 內聯編輯Django中的ManyToMany關係
- 17. django模型關係定義
- 18. Django博客應用程序與自定義管理系統
- 19. Django的安裝自定義應用程序(PostgreSQL系統模型)
- 20. Django應用程序結構
- 21. 構造Django應用程序
- 22. 應用程序體系結構簡化應用程序定製
- 23. Django模板:共享應用程序之間的自定義包含標記
- 24. 應用程序定義的異常
- 25. JPA,使用@ManyToMany關係
- 26. 如何正確定義此自定義標記關係?
- 27. 與ManyToMany關係的主義查詢
- 28. DotNetNuke自定義應用程序體系結構
- 29. Android應用程序自定義對話框體系結構
- 30. 「間接」ManyToMany關係
爲什麼不爲每個想要與標籤連接的模型分別創建m2m關係? – j0ker
我不想創建模型和標籤模型之間的依賴關係。如果我將新模型添加到我的系統中,我不想向標記應用程序添加新字段。 – Mike
@Mike您是否正在使用像「django-taggit」或「django-tagging」這樣的模塊或者只是自己的代碼? – inigomedina