Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rearrange Inlines weird behavior with django-nested-inlines #1011

Closed
HaddadJoe opened this issue Jan 7, 2023 · 3 comments
Closed

Rearrange Inlines weird behavior with django-nested-inlines #1011

HaddadJoe opened this issue Jan 7, 2023 · 3 comments

Comments

@HaddadJoe
Copy link

HaddadJoe commented Jan 7, 2023

Thanks for maintaining that great project! I'm running into some weird behavior when trying to run/integrate a multiple layer nested admin with grappelli.

here's the dummy models I have. Nothing too fancy, pretty straightforward nested models. Note that the Article has two foreign key referencing it. One from the image and one from the paragraph models.

class TableOfContents(models.Model):
    title_tableofcontents = models.TextField()


class TocSection(models.Model):
    title_tocsection = models.TextField()
    table_of_content = models.ForeignKey(TableOfContents, on_delete=models.CASCADE)


class TocArticle(models.Model):
    title_tocarticle = models.TextField()
    section = models.ForeignKey(TocSection, on_delete=models.CASCADE)


class TocParagraph(models.Model):
    title_tocparagraph = models.TextField()
    article = models.ForeignKey(TocArticle, on_delete=models.CASCADE)


class TocImage(models.Model):
    title_tocimage = models.TextField()
    article = models.ForeignKey(TocArticle, on_delete=models.CASCADE)

Here's how my admin looks without trying to rearrange the nested inlines. Also nothing too fancy here pretty straightforward, just note that article is already an inline of sections (which is an inline of table of content)

class TocParagraphInline(NestedStackedInline):
    model = models.TocParagraph


class TocImageInline(NestedStackedInline):
    model = models.TocImage


class TocArticleInline(NestedStackedInline):
    model = models.TocArticle
    inlines = [TocParagraphInline, TocImageInline]
    fieldsets = [
        (
            "Image Data",
            {
                "fields": [],
                # "classes": [
                #     "placeholder tocsection_set-1-tocarticle_set-0-tocimage_set-group"
                # ],
            },
        ),
        (
            "Paragraph Data",
            {
                "fields": [],
                # "classes": [
                #     "placeholder tocsection_set-1-tocarticle_set-0-tocparagraph_set-group"
                # ],
            },
        ),
        (
            "Article Data",
            {"fields": ["title_tocarticle"]},
        ),
    ]


class TocSectionInline(NestedStackedInline):
    model = models.TocSection
    inlines = [TocArticleInline]


class TableOfContentsAdmin(NestedModelAdmin):
    inlines = [TocSectionInline]


admin.site.register(models.TableOfContents, TableOfContentsAdmin)

Here's how things look on the admin UI
image

Now as you might have guessed, my goal is to rearrange the inlines image and paragraph under the designated fieldsets for each category. When uncommentting the classes to try to rearrange them some weird behavior happen. here's a screenshot
image

As you can see the sections have been rearranged correctly but as a consequence:

  1. The title of the fieldset, here Image Data and Paragraph Data have disappeared.
  2. The blue tabs to un-collapse the inlines does not work on preloaded inlines
    2.1 If I add a new article the un-collapsing works but the title of the fieldset mentioned in 1) is not present either.
  3. The add Image and Paragraph buttons also stop working when the inlines are moved.

Would appreciate any help or directions, happy to contribute if I can help!

@sehmaschine
Copy link
Owner

I'm sorry, but we cannot really comment on other third-party-apps (like django-nested-inlines).

@HaddadJoe
Copy link
Author

@sehmaschine I understand that but this is an issue with grappelli as uninstalling it from the installed apps creates no issues with the same configuration. Are you saying this integrations with other popular third party libraries won't be supported? Would you be open to PRs if these gets fixed by the community?

@sehmaschine
Copy link
Owner

Other third party libraries can (or cannot) integrate with grappelli. It is mainly their choice. And I know that this is not a very satisfying situation ... but it is what it is.

I think a PR should go to django-nested-inlines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants