我有一个模型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