Skip to main content

A reusable Django app to easily duplicate model records.

Project description

Django Duplicator 🔁

A lightweight mixin for Django Admin that adds object duplication functionality, both in bulk (via an Admin Action) and for single objects (via a "Duplicate and continue editing" button on the change form).


✨ Key Features

  • Single Object Duplication: A "Duplicate and continue editing" button appears on the object detail page.
  • Bulk Duplication (Admin Action): An Admin Action is provided to duplicate selected objects from the changelist page.
  • DRY and Flexible: Uses simple model and Admin mixins that are easy to integrate into any Django model.

💻 Installation

  pip install django-duplicator

Add duplicator to your INSTALLED_APPS in settings.py:

# settings.py
INSTALLED_APPS = [
    # ...
    'django.contrib.admin',
    # ...
    'duplicator',
]

🚀 Usage

  1. Model (Enabling Duplication)

To make your model duplicatable, you must inherit from DuplicatorMixin.

    # models.py
    from django.db import models
    from duplicator import DuplicatorMixin
    
    class Customer(DuplicatorMixin, models.Model):
        name = models.CharField(max_length=255)
        # ... other fields ...
    
        def __str__(self):
            return self.name
  1. Admin (Enabling Buttons and Actions)

To enable both the single duplication button and the bulk duplication Admin Action, inherit from DuplicatorAdminMixin.

# admin.py
from django.contrib import admin
from duplicator import DuplicatorAdminMixin
from .models import Customer

@admin.register(Customer)
class CustomerAdmin(DuplicatorAdminMixin, admin.ModelAdmin):
    list_display = ('name', 'id')
    # ... other admin configurations ...

📸 Feature Demonstration

A. Bulk Duplication (Admin Action)

The duplication option appears in the Actions dropdown menu on the changelist page.

Action

B. Single Duplication (Change Form Button)

The "Duplicate and continue editing" button is prominently placed on the object detail page.

Detail

🤝 Contributing

We welcome all contributions! If you find a bug or have a feature suggestion, please open an Issue or submit a Pull Request.

📄 License

This project is licensed under the [Your License Type, e.g., MIT License]. See the LICENSE file for full details.

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_duplicator-0.1.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_duplicator-0.1.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file django_duplicator-0.1.0.tar.gz.

File metadata

  • Download URL: django_duplicator-0.1.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.0 Linux/6.11.0-1018-azure

File hashes

Hashes for django_duplicator-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c350ef70baf36780edc99cb63a2011d217f67136aef8cb4a40b0ea8d5e2d2629
MD5 4f92745bfc25d0036173b049fc2930f6
BLAKE2b-256 35187fd307855f5b4a57ec793889dc3801ce50ce81b148d70d9e2723ce027003

See more details on using hashes here.

File details

Details for the file django_duplicator-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: django_duplicator-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.0 Linux/6.11.0-1018-azure

File hashes

Hashes for django_duplicator-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fdb27af6a37bbccdadd50286b2d99c5166f189f5c2120465b2fdf65c43071cc0
MD5 e577ab2bb97dff3c48c55f1d45ee8e68
BLAKE2b-256 a4db6569afe5ea83767c16c5db8ba49727f5604ec58dda7d46d086dead91cb01

See more details on using hashes here.

Supported by

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