Skip to main content

A Django app to allow for readonly admin inlines without relationship to the base model

Project description

Django Simulated Inlines

Built with Spacemacs

Description

This package extends the ModelAdmin interface with the possibility to create custom inlines that can contain a list of any Model instances, the relationship with the base change_form is not needed.

Features

  • inlines can be collapsed
  • supports inline subtitles
  • pagination
  • custom links for any inline cell
  • dynamic fields
  • action buttons

Installation

  1. Install: pip install django_simulated_inlines
  2. add to INSTALLED_APPS:
    INSTALLED_APPS = [
        ...
        'django_simulated_inlines',
    ]

How to Use

  • Import the ModelAdmin and Inline classes

from django_simulated_inlines.admin import SimulatedInline, SimulatedInlinesModelAdmin

  • Declarating inlines:
class ExampleInline(SimulatedInline):
    model = ExampleModel
    verbose_name = _("example")
    verbose_name_plural = _("examples")
    per_page = 20
    buttons = ("example_button", )
    collapse = True
    fields = (
        "id"
        ("custom_link", "/admin/custom/link/%s/"),
        "custom_field",
    )

    def custom_field(self, obj):
        """The return of this function is the value on the field cell"""
        return f"Custom field for {self.field}"
    custom_field.short_description = _("custom field")

    def example_button(self, request, object_id):
        """This function is called when the button is pressed"""
        execute_code()
    example_button.short_description = _("Execute example button")

    def get_subtitle(self, request, object_id):
        """Override this to define a subtitle for the inline"""
        return "this is a subtitle"

    def get_queryset(self, request, object_id, parent_queryset):
       """Override this to filter or customize de queryset"""
       return self.model.objects.filter(x=object_id).all()
  • Add the inlines to the SimulatedInlinesModelAdmin.simulated_inlines.
class ExampleModelAdmin(SimulatedInlinesModelAdmin):
    simulated_inlines = [ExampleSimulatedInline]

Requirements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_simulated_inlines-0.1.tar.gz (8.8 kB view hashes)

Uploaded Source

Built Distribution

django_simulated_inlines-0.1-py3-none-any.whl (8.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page