Ordered Images Admin
Version Information
Introduced at the 0.4.1 version.
The first thing needed to understand the ordered version of the ImageUploaderInline is read the inline tutorial. This page has a documentation of how to extend the ImageUploaderInline with order field to allow to reorder, by clicking and dragging, the images inside the inline.
Adding Order Field to Model
Add a PositiveIntegerField to the model to store the order of the images inside the admin.
# ecommerce/models.py
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Product'
verbose_name_plural = 'Products'
class ProductImage(models.Model):
product = models.ForeignKey(
Product,
related_name="images",
on_delete=models.CASCADE
)
image = models.ImageField("image")
order = models.PositiveIntegerField('Order', default=1)
def __str__(self):
return str(self.image)
class Meta:
verbose_name = 'Product Image'
verbose_name_plural = 'Product Images'
Change inline to OrderedImageUploaderInline
Inside the admin.py, change the inline from ImageUploaderInline to OrderedImageUploaderInline and setup some configs:
# ecommerce/admin.py
from django.contrib import admin
from ecommerce.models import Product, ProductImage
from image_uploader_widget.admin import ImageUploaderInline
class ProductImageAdmin(OrderedImageUploaderInline):
model = ProductImage
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
inlines = [ProductImageAdmin]
Attributes
| Attribute | Type | Default Value | Description |
|---|---|---|---|
| order_field | str |
"order" |
The name of field that represents the order of images. |
| template | str |
"admin/edit_inline/ordered_image_uploader.html" |
The template path to render the widget. |
All the attributes from the ImageUploaderInline are present too. For example, is possible to change the name of the used order_field by adding it's attribute to the OrderedImageUploaderInline:
from image_uploader_widget.admin import ImageUploaderInline
class MyInlineAdminAdmin(OrderedImageUploaderInline):
model = MyModel
order_field = "my_custom_field"
Mobile Touch Support
Version Information
Introduced at the 0.6.0 version.
The original behaviour for OrderedImageUploaderInline is manual created and don't support mobile touch events. On the version 0.6.0 the sorting uses the Sortable and, then, the mobile touch events are supported.
