Django Admin 嵌套内联

2024-01-08

我需要一个嵌套的 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 https://code.djangoproject.com/ticket/9025最近,但我不会屏住呼吸。

解决此问题的一种常见方法是通过同时拥有一个管理员来链接到第一级和第二级(或第二级和第三级)之间的管理员ModelAdmin以及同一模型的内联:

Give Certificate a ModelAdmin with TrainingDate作为内联。放show_change_link = True for CertificateInline所以你可以点击一个内联去到它的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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Admin 嵌套内联 的相关文章

随机推荐