Nested inlines in the Django admin?

后端 未结 5 798
春和景丽
春和景丽 2020-11-28 12:28

Alright, I have a fairly simple design.

class Update(models.Model):
    pub_date = models.DateField()
    title = models.CharField(max_length=512)

class Pos         


        
相关标签:
5条回答
  • 2020-11-28 12:54

    I ran into a similar issue to this. My approach was to make an UpdateAdmin that held inlines for both Media and Post... it basically just makes it so you have a list of all of the media entries followed by all of the posts in an update.

    class MediaInline(admin.StackedInline):
            model = Media
    
    class PostInline(admin.StackedInline):
            model = Post
    
    class PostAdmin(admin.ModelAdmin):
            inlines = [MediaInline,]
    
    class UpdateAdmin(admin.ModelAdmin):
            inlines = [MediaInline,PostInline]
    

    It isn't an ideal solution but it works for a quick and dirty work around.

    0 讨论(0)
  • 2020-11-28 13:10

    As of now there is no "built-in" way to have nested inlines (inline inside inline) in django.contrib.admin. Pulling something like this off is possible by having your own ModelAdmin and InlineModelAdmin subclasses that would enable this kind of functionality. See the patches on this ticket http://code.djangoproject.com/ticket/9025 for ideas on how to implement this. You'd also need to provide your own templates that would have nested iteration over both the top level inline and it's child inline.

    0 讨论(0)
  • 2020-11-28 13:11

    There is now this egg available, which is a collation of the relevant patches mentioned in the other answer:

    https://github.com/theatlantic/django-nested-admin

    0 讨论(0)
  • 2020-11-28 13:16

    I have just ran into this issue as well... Seems this thread which contains the request for the nested inlines feature (https://code.djangoproject.com/ticket/9025#no2) has been updated with further information.

    A custom made app called "django-super-inline" has been released. More details here: https://github.com/BertrandBordage/django-super-inlines

    Installation and usage instructions below.

    Hope this is useful for whomever comes across this.

    0 讨论(0)
  • 2020-11-28 13:18

    I have done this using https://github.com/theatlantic/django-nested-admin, for the following Data structure:

    • Contest
      • Judges
      • Contestants
        • Singers
        • Songs

    My admin.pyfile:

    from django.contrib import admin
    import nested_admin
    
    from .models import Contest, Contestant, Judge, Song, Singer    
    
    class SongInline(nested_admin.NestedTabularInline):
        model = Song
        extra = 0
    
    class SingerInline(nested_admin.NestedTabularInline):
        model = Singer
        extra = 0
    
    class ContestantInline(nested_admin.NestedTabularInline):
        model = Contestant
        inlines = [SongInline, SingerInline]
        extra = 0
    
    class JudgeInline(nested_admin.NestedTabularInline):
        model = Judge
        extra = 0
    
    class ContestAdmin(nested_admin.NestedModelAdmin):
        model = Contest
        inlines = [ContestantInline, JudgeInline]
        extra = 0
    
    admin.site.register(Contest, ContestAdmin)
    

    https://github.com/theatlantic/django-nested-admin appears to be much more actively maintained than the other apps already mentioned (https://github.com/BertrandBordage/django-super-inlines and https://github.com/Soaa-/django-nested-inlines)

    0 讨论(0)
提交回复
热议问题