如何在Django管理面板中列出所有与外键相关的对象?

芦香

我想用django管理面板实现一个非常简单的功能,但是到目前为止,我找不到正确的方法来实现这一目标:

模型

class Author(models.Model):
    name = models.CharField()

class Books(models.Model):
    title = models.CharField()
    author = models.ForeignKey(Author)

管理员

class AuthorAdmin(admin.ModelAdmin):
    pass
admin.site.register(Author, AuthorAdmin)

如何在作者列表概述中的每个项目(作者)上添加超链接,该超链接链接到显示特定作者的所有书籍的视图?例如:

  • JK罗琳(书籍)
  • JRR托尔金(书籍)

书籍是指向显示所有作者书籍的网站的超链接。

全部大写

您正在寻找ModelAdmin.list_filter

设置list_filter以激活管理员更改列表页面右侧栏中的过滤器。listfilter可以是字段名称,其中指定的字段应该是BooleanField,CharField,DateField,DateTimeField,IntegerField,ForeignKey或ManyToManyField,例如:

 # Add a list filter author to BookAdmin.
 # Now you can filter books by author.
 class BookAdmin(ModelAdmin):
    list_filter = ('author', )

现在,您可以使用@Wolph建议在作者list_display中添加链接。该链接指向按作者过滤的图书清单:

# Add hyperlinks to AuthorAdmin.
# Now you can jump to the book list filtered by autor. 
class AuthorAdmin(admin.ModelAdmin):
    def authors(self):
        return '<a href="/admin/appname/book/?author__id__exact=%d">%s</a>' % (self.author_id, self.author)
    authors.allow_tags = True

替代。要保存点击,您还可以直接指向书籍的更改视图:

class Books(models.Model):
    title = models.CharField()
    author = models.ForeignKey(Author)

def get_admin_url(self):
    return "/admin/appname/books/%d/" %self.id


class BookAdmin(admin.ModelAdmin):
    def authors(self):
        html = ""
        for obj in Books.objects.filter(author__id_exact=self.id):
            html += '<p><a href="%s">%s</a></p>' %(obj.get_admin_url(), obj.title)
        return html
    authors.allow_tags = True

    list_display = ['title', authors]

免责声明:未经测试,但是如果您解决了错字问题,它将起作用!:)

请注意,这些链接也可以在管理员的其他位置插入。将其添加到窗口小部件时,可以从更改视图转到更改视图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django:过滤与外键对象相关的所有操作

来自分类Dev

如何将管理表单集中的外键选择限制为仅在 django 中的相关对象

来自分类Dev

如何从所有与Django中的外键链接的ID中提取所有对象?

来自分类Dev

如何在django模型中使用外键获取对象的所有属性

来自分类Dev

如何在django-rest-framework中设置权限,以便会话用户只能列出对该用户具有外键的对象?

来自分类Dev

如何列出django中所有模型的所有关系和外键?

来自分类Dev

如何在用户的django管理面板中具有相关字段上的日期过滤器的统计信息?

来自分类Dev

如何在Django中访问与模型相关的对象的所有子对象?

来自分类Dev

Django:向所有与外键相关的模型添加对象实例

来自分类Dev

Django:如何通过与外键相关的对象获取对象

来自分类Dev

遍历抽象Django模型的所有与外键相关的子代

来自分类Dev

在Django管理界面中使用所有外键引用模型的对象

来自分类Dev

如何不列出与外键相关的字段

来自分类Dev

如何在GC完成列表中列出所有对象?

来自分类Dev

如何通过django REST中相关表的外键过滤模型对象

来自分类Dev

在开发中显示 Django 管理面板中的所有模型

来自分类Dev

如何获取与Django中的User相关联的所有相关对象?

来自分类Dev

如何在一个请求中创建一种创建新对象以及与外键相关的对象的表单?

来自分类Dev

列出Django管理网站中的所有订单

来自分类Dev

如何在 couchdb 中列出所有管理员用户?

来自分类Dev

Django Rest Framework,如何在另一个外键中获取外键的对象数量

来自分类Dev

在 Django Rest Framework 中列出某些内容时,如何不仅仅显示对象的外键?

来自分类Dev

如何在Django中导出实例及其所有相关对象?

来自分类Dev

Django按相关管理器列中的外键过滤表

来自分类Dev

如何在Django中打印单个对象的所有值?

来自分类Dev

如何在Microsoft SQL Server中关闭/打开所有外键和触发器?

来自分类Dev

如何在所有外键之后执行SELECT *

来自分类Dev

如何在Django中获取具有最大数量相关对象的对象

来自分类Dev

如何为Django管理面板过滤对象?

Related 相关文章

  1. 1

    Django:过滤与外键对象相关的所有操作

  2. 2

    如何将管理表单集中的外键选择限制为仅在 django 中的相关对象

  3. 3

    如何从所有与Django中的外键链接的ID中提取所有对象?

  4. 4

    如何在django模型中使用外键获取对象的所有属性

  5. 5

    如何在django-rest-framework中设置权限,以便会话用户只能列出对该用户具有外键的对象?

  6. 6

    如何列出django中所有模型的所有关系和外键?

  7. 7

    如何在用户的django管理面板中具有相关字段上的日期过滤器的统计信息?

  8. 8

    如何在Django中访问与模型相关的对象的所有子对象?

  9. 9

    Django:向所有与外键相关的模型添加对象实例

  10. 10

    Django:如何通过与外键相关的对象获取对象

  11. 11

    遍历抽象Django模型的所有与外键相关的子代

  12. 12

    在Django管理界面中使用所有外键引用模型的对象

  13. 13

    如何不列出与外键相关的字段

  14. 14

    如何在GC完成列表中列出所有对象?

  15. 15

    如何通过django REST中相关表的外键过滤模型对象

  16. 16

    在开发中显示 Django 管理面板中的所有模型

  17. 17

    如何获取与Django中的User相关联的所有相关对象?

  18. 18

    如何在一个请求中创建一种创建新对象以及与外键相关的对象的表单?

  19. 19

    列出Django管理网站中的所有订单

  20. 20

    如何在 couchdb 中列出所有管理员用户?

  21. 21

    Django Rest Framework,如何在另一个外键中获取外键的对象数量

  22. 22

    在 Django Rest Framework 中列出某些内容时,如何不仅仅显示对象的外键?

  23. 23

    如何在Django中导出实例及其所有相关对象?

  24. 24

    Django按相关管理器列中的外键过滤表

  25. 25

    如何在Django中打印单个对象的所有值?

  26. 26

    如何在Microsoft SQL Server中关闭/打开所有外键和触发器?

  27. 27

    如何在所有外键之后执行SELECT *

  28. 28

    如何在Django中获取具有最大数量相关对象的对象

  29. 29

    如何为Django管理面板过滤对象?

热门标签

归档