You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ForeignKey反向互访:在Client应用admin中展示关联Email外键

实现方案

步骤1:编辑Client应用的admin.py文件

在Client应用目录下新建/打开admin.py,写入以下代码:

from django.contrib import admin
from .models import Client
from Email.models import ScheduledEmail

# 定义关联邮件的内联展示类
class ScheduledEmailInline(admin.TabularInline):
    model = ScheduledEmail
    # 额外空行数量,设为0避免默认显示多余的待添加行
    extra = 0
    # 要展示的字段,可根据需求自行调整
    fields = ["subject", "recipient_email", "sent", "datetime_sent", "datetime_created"]
    # 设为只读的字段,禁止在Client页面修改邮件内容
    readonly_fields = ["datetime_sent", "datetime_created", "recipient_email", "subject"]

# 自定义Client的管理类
class ClientAdmin(admin.ModelAdmin):
    # 内联展示关联的邮件
    inlines = [ScheduledEmailInline]
    # (可选)Client列表页显示关联邮件数量
    list_display = ["name", "email", "number", "scheduled_email_count"]
    
    def scheduled_email_count(self, obj):
        # 调用ForeignKey定义的related_name获取关联邮件总数
        return obj.scheduled_emails_sent.count()
    # 列表页该字段的显示名称
    scheduled_email_count.short_description = "关联邮件数量"

# 注册Client到管理后台
admin.site.register(Client, ClientAdmin)

效果说明

  • 打开任意Client的详情编辑页,底部会以表格形式展示所有关联的ScheduledEmail记录
  • (可选配置)Client列表页会新增「关联邮件数量」列,可直观看到每个客户绑定的邮件总数
  • 如果希望每条邮件单独占块展示,把admin.TabularInline换成admin.StackedInline即可

内容的提问来源于stack exchange,提问作者Baked Potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:06:03