首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在django管理中显示来自其他模型的只读数据?

在Django的管理界面中显示来自其他模型的只读数据,可以通过自定义ModelAdmin类来实现。以下是一个基本的步骤指南:

基础概念

Django的管理界面(admin)是一个内置的应用程序,它提供了一个易于使用的界面来管理数据库中的数据。通过自定义ModelAdmin类,你可以控制模型在管理界面中的显示和行为。

类型

  • Inline Model Admin:用于在一个模型的编辑页面中同时编辑关联的模型。
  • Stacked InlineTabular Inline:是Inline Model Admin的两种形式,分别以堆叠和表格的形式展示关联模型。
  • Readonly Fields:允许你在管理界面中将某些字段设置为只读。

应用场景

当你需要在Django管理界面中展示一个模型的数据,但这些数据实际上来自另一个模型,并且你不希望用户能够编辑这些数据时,可以使用只读字段。

解决方法

假设我们有两个模型AuthorBook,我们希望在Book的管理界面中显示Author的只读信息。

代码语言:txt
复制
from django.contrib import admin
from .models import Author, Book

class BookAdmin(admin.ModelAdmin):
    # 定义一个方法来获取Author的只读信息
    def author_info(self, obj):
        return f"{obj.author.name} ({obj.author.email})"
    author_info.short_description = 'Author Info'  # 设置列标题
    author_info.admin_order_field = 'author__name'  # 允许排序

    # 将author_info方法添加到只读字段列表
    readonly_fields = ('author_info',)

# 注册Book模型和自定义的ModelAdmin
admin.site.register(Book, BookAdmin)

在这个例子中,我们定义了一个author_info方法来获取Author模型的信息,并将其添加到BookAdminreadonly_fields列表中。这样,在Django管理界面的Book编辑页面中,就会显示一个名为Author Info的只读字段,其中包含了Author的相关信息。

遇到的问题及解决方法

如果你在尝试这种方法时遇到了问题,比如author_info方法没有正确显示数据,可能是因为:

  • 方法命名:确保方法名没有拼写错误,并且遵循Python的命名规范。
  • 字段访问:检查obj.author是否正确引用了关联的Author模型实例。
  • 注册顺序:确保Author模型已经在Django admin中注册,否则无法访问其信息。

参考链接

通过上述步骤,你应该能够在Django管理界面中成功显示来自其他模型的只读数据。如果需要进一步的定制或有其他问题,可以参考Django官方文档或搜索相关的技术论坛和社区。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

1分44秒

uos下升级hhdbcs

1分44秒

uos下升级hhdbcs

1分7秒

REACH SVHC 候选清单增至 235项

领券