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

在GenericForeignKey管理中显示只读Django值

在Django中,GenericForeignKey是一种特殊的关联字段,它允许模型与任意其他模型建立关联。然而,在默认情况下,GenericForeignKey字段在管理界面中只显示为一个文本框,用户无法直接编辑其值。如果我们希望在管理界面中显示GenericForeignKey字段的只读值,可以通过以下步骤实现:

  1. 创建一个自定义的ModelAdmin类,用于管理包含GenericForeignKey字段的模型。
代码语言:txt
复制
from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields = ['get_generic_foreign_key_value']

    def get_generic_foreign_key_value(self, obj):
        # 通过obj获取GenericForeignKey字段的值
        # 返回值将显示在管理界面中
        return obj.content_object

    get_generic_foreign_key_value.short_description = 'GenericForeignKey Value'
  1. 将自定义的ModelAdmin类应用到相关的模型。
代码语言:txt
复制
from django.contrib import admin
from django.contrib.contenttypes.admin import GenericTabularInline
from .models import MyModel, MyRelatedModel

class MyRelatedModelInline(GenericTabularInline):
    model = MyRelatedModel

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    inlines = [MyRelatedModelInline]

在上述代码中,我们创建了一个自定义的ModelAdmin类MyModelAdmin,并定义了一个名为get_generic_foreign_key_value的方法,该方法通过obj参数获取GenericForeignKey字段的值,并将其返回。我们还将get_generic_foreign_key_value方法添加到readonly_fields列表中,以确保其只读显示在管理界面中。

然后,我们将自定义的ModelAdmin类应用到相关的模型MyModel上,通过@admin.register(MyModel)装饰器将MyModelAdminMyModel关联起来。如果有其他相关模型,可以使用GenericTabularInlineGenericStackedInline将其添加到inlines列表中。

这样,当我们在Django的管理界面中查看MyModel对象时,GenericForeignKey字段的只读值将显示在GenericForeignKey Value列中。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云的官方文档和网站,了解他们提供的云计算服务和解决方案。

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

相关·内容

领券