我有一個模型A與ForeignKey到模型B. 在Django管理員中,如何添加一個鏈接在模型A的管理頁面旁邊的ForeignKey字段打開模型B的管理頁面?django管理員鏈接到外鍵對象
13
A
回答
23
你可以做到以下幾點:
models.py(例如):
model B(models.Model):
name = models.CharField(max_length=20)
model A(models.Model):
field1 = models.CharField(max_length=20)
Bkey = models.ForeignKey(B)
admin.py
from django.core import urlresolvers
class AAdmin(admin.ModelAdmin):
list_display = ["field1","link_to_B"]
def link_to_B(self, obj):
link=urlresolvers.reverse("admin:yourapp_b_change", args=[obj.B.id]) #model name has to be lowercase
return u'<a href="%s">%s</a>' % (link,obj.B.name)
link_to_B.allow_tags=True
與您的應用程序的名稱替換yourapp。
2
此外接受的答案的,在Django(1.10,1.11和2.0)時,反向方法的較新版本現在是在封裝django.urls(參見this link)。
此外,您必須使用mark_safe方法在管理員中輸出HTML。所以allow_tags變得毫無用處。
最後,將鏈接添加到用戶,我在admin.py這個功能:
from django.urls import reverse
from django.utils.safestring import mark_safe
class ObjectAdmin(admin.ModelAdmin):
list_display = ('name', 'link_to_user')
def link_to_user(self, obj):
link = reverse("admin:auth_user_change", args=[obj.user.id])
return mark_safe('<a href="%s">Edit %s</a>' % (link, obj.user.username))
link_to_user.short_description = 'Edit user'
+0
我建議使用['format_html'](https://docs.djangoproject .com/en/stable/ref/utils /#django.utils.html.format_html)而不是'mark_safe'。 – batisteo 2018-03-08 20:11:06
相關問題
- 1. 鏈接到Django管理員
- 2. Django管理鏈接到相關對象
- 3. Django管理員刪除外鍵圖標
- 4. django管理員編輯外鍵內聯
- 5. Django管理員外鍵相關
- 6. django管理員外鍵顯示麻煩
- 7. Django管理外鍵
- 8. 創造Django管理鏈表外鍵
- 9. Django管理員:刪除默認鏈接
- 10. 對外鍵屬性的Django管理員過濾器
- 11. 如何鏈接到Django管理視圖中的不同對象?
- 12. Django管理員爲用戶的對象
- 13. django管理員複製對象
- 14. Django只讀外鍵字段管理渲染爲鏈接
- 15. 的Django在管理創建一個鏈接,外鍵
- 16. 如何在Django管理員的對象列表中顯示外鍵字段?
- 17. Django管理:通過外鍵
- 18. Django管理list_filter外鍵子
- 19. 在Django的父級管理視圖中將子對象鏈接到父對象
- 20. 從Django中對管理員
- 21. Django管理 - 外鍵「字段對象」名單
- 22. 在Django管理許多對象與外鍵
- 23. 緩存django管理顯示中的反向外鍵對象
- 24. Ado.Net實體:對象不顯示鏈接的成員(外鍵)
- 25. django:如何將主頁鏈接添加到管理員
- 26. SonataUserAdminBundle:鏈接到管理員操作
- 27. Django管理員:註冊額外的員工管理
- 28. Django的獲取對象的查詢集與鏈接的外鍵
- 29. 通過外鍵鏈接導軌對象
- 30. 添加鏈接到Django管理頁面
萬一有人使用這個答案也一樣,你的模型在'reverse'功能是小寫。那將是:''admin:yourapp_yourmodel_change「'。 – 2016-06-04 17:15:54
@RaphaëlGomès:感謝您的輸入,編輯了答案。 – 2016-06-05 05:49:42
你會得到什麼錯誤? – 2016-07-15 10:21:29