python - Django Admin 嵌套内联

标签 python python-3.x django django-models django-admin

我需要一个嵌套的 django 管理内联, 我可以将日期字段内联包含在另一个内联中,如下所示。

我有以下模型:

class Person(models.Model):
     name = models.CharField(max_length=200)
     id_no = models.IntegerField()

class Certificate(models.Model):
     cerfificate_no = models.CharField(max_length=200)
     certificate_date = models.DateField(max_length=100)
     person = models.ForeignKey(Person)
     training = models.CharField(max_length=200)

class Training_Date(models.Model):
      date = models.DateField()
      certificate = models.ForeignKey(Certificate)

还有,下面的管理员:

class CertificateInline(admin.StackedInline):
    model = Certificate

class PersonAdmin(admin.ModelAdmin):
     inlines = [CertificateInline,]
admin.site.register(Person,PersonAdmin)

但是,我需要将 Training_Date 模型作为内联包含在内,这是内联证书管理的一部分。

有什么想法吗?

最佳答案

https://code.djangoproject.com/ticket/9025 有一些变化最近,但我不会屏住呼吸。

解决此问题的一种常见方法是通过为同一模型同时使用 ModelAdmin 和 Inline 来链接到第一级和第二级(或第二级和第三级)之间的管理员:

Certificate 一个带有 TrainingDate 作为内联的 ModelAdmin。为 CertificateInline 设置 show_change_link = True,以便您可以单击内联以转到其 ModelAdmin 更改表单。

管理员.py:

# Certificate change form has training dates as inline

class TrainingDateInline(admin.StackedInline):
    model = TrainingDate

class CertificateAdmin(admin.ModelAdmin):
    inlines = [TrainingDateInline,]
admin.site.register(Certificate ,CertificateAdmin)

# Person has Certificates inline but rather
# than nesting inlines (not possible), shows a link to
# its own ModelAdmin's change form, for accessing TrainingDates:

class CertificateLinkInline(admin.TabularInline):
    model = Certificate
    # Whichever fields you want: (I usually use only a couple
    # needed to identify the entry)
    fields = ('cerfificate_no', 'certificate_date')
    # Django 1.8 introduced this, no need to make your own link
    show_change_link = True

class PersonAdmin(admin.ModelAdmin):
    inlines = [CertificateLinkInline,]
admin.site.register(Person, PersonAdmin)

关于python - Django Admin 嵌套内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14308050/

相关文章:

python - 原型(prototype) iPhone 应用程序和 Python SimpleHTTPServer 之间的简单安全性

python - 在 ec2 中安装一个 s3 桶并透明地用作 mnt 点

Python Google Drive API - 下载重复文件

python - django - 加载 MySQLdb 模块时出错 : No module named MySQLdb

python - Django 中消息队列/计划任务的适当方法

python - 当我编写一个 python 脚本来使用配置 "Debug|Win32"运行 Devenv 时,它什么都不做

python - 关于将 celery 与带有远程存储的 sorl-thumbnails 一起使用的指示?

python - 如何在滚动面板中显示图像

python Django : Minimal Django + Cassandra local application

python - 在 "for line in data"循环中使用 .readline() 将文件的多行分配给多个变量