的確,在數據庫級別,這不會引起任何問題。
雖然你會遇到你的URL路徑和內部視圖名稱的問題!
假設你有兩個應用 - 「博客」和「評論」和每個人都有一個型號命名的消息,並且每個消息模式有一個相應的ModelViewSet(BlogMessageViewSet和CommentMessageViewSet,分別)
Django的路由器自動命名您的視圖名稱message-list
,message-detail
,等等......不考慮該模型在哪個應用程序中。因此,在將這些應用程序加載到路由器中之後,您將有碰撞,因爲您有兩個名爲「消息」的模型。例如,如果在urls.py我的路由器是這樣的:
router = routers.DefaultRouter()
router.register(r'blog/message', BlogMessageViewSet)
router.register(r'comment/message', CommentMessageViewSet)
然後在內部都自認爲是最後登記用的/博客/郵件/評論/消息路由將指向/評論/消息路由器和內部視圖名稱將是message-list
,message-detail
,等...
您可以通過給不同的基地名稱解決這個問題的你的意見,雖然一個像這樣的:
router = routers.DefaultRouter()
router.register(r'blog/message', BlogMessageViewSet, view_name='blogmessage')
router.register(r'comment/message', CommentMessageViewSet)
雖然這種意志要求你e如果您使用的是HyperlinkedModelSerializer,並且在urlresolvers.reverse()或其他基於url的工具中使用視圖名稱'blockmessage'來引用此視圖的所有引用,則xplicit會在BlogMessageViewSet的序列化程序中將url定義爲HyperlinkedIdentityField。
如果你在一個視圖中加載模型會發生什麼?或者,如果你做命令shell_plus例如? – Pol 2010-10-22 16:44:54
確保名稱不會相互衝突。通過我的意思是像'import blog.models.Post as BlogPost'和'import message.models.Post as MessagesPost'這樣的東西' – 2010-10-22 16:46:04
它怎麼樣加載模型,因爲它們是...它會給我一個錯誤嗎? – Pol 2010-10-22 16:48:45