Django widget for multiple image input
Project description
Django MultipleImageInput
Widget for multiple image fields. Works good with PostgreSQL array fields.
Example
In this example i use crispy_forms
settings.py
import pathlib import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) MEDIA_URL = '/media/' MEDIA_ROOT = pathlib.Path(BASE_DIR) / 'common' / 'media'
model.py
from django.contrib.postgres.fields import ArrayField from django.db import models class Product(models.Model): class Meta: db_table = 'product' verbose_name = 'товар' verbose_name_plural = 'товары' IMAGE_PATH = 'common/image/product' title = models.TextField('заголовок', null=True, blank=True) description = models.TextField('описание', null=True, blank=True) price = models.IntegerField('цена') youtube_url = models.URLField('видео youtube', null=True, blank=True) image_list = ArrayField(models.TextField("картинки"), default=list, verbose_name='картинки', blank=True)
view.py
from settings import MEDIA_ROOT from models import Product import django_multipleimageinput class UploadImageView(django_multipleimageinput.UploadImageView): media_root = MEDIA_ROOT image_path = Product.IMAGE_PATH
forms.py
from django import forms from models import Product from django_multipleimageinput import MultipleImageInput from django.urls import reverse_lazy from crispy_forms.helper import FormHelper from crispy_forms.layout import ButtonHolder, Submit, Layout class ProductForm(forms.ModelForm): class Meta: model = Product fields = ["title", "description", "price", "youtube_url", "image_list"] widgets = { "title": forms.TextInput(), "description": forms.Textarea(attrs={'rows': 4, 'cols': 15}), "image_list": MultipleImageInput(reverse_lazy('common:product/upload-image'), MEDIA_URL) } def __init__(self, *args, **kwargs): self.helper = FormHelper() self.helper.layout = Layout( 'title', 'description', 'price', 'youtube_url', 'image_list', ButtonHolder( Submit('submit', 'Сохранить') ) ) super(ProductForm, self).__init__(*args, **kwargs)
urls.py
from django.urls import path from django.conf.urls.static import static as sttc import views import settings app_name = 'common' urlpatterns = [ path('product/upload-image', views.UploadImageView.as_view(), name='product/upload-image'), ] + sttc(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size django_multipleimageinput-0.0.2-py3-none-any.whl (8.3 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size django_multipleimageinput-0.0.2.tar.gz (6.8 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for django_multipleimageinput-0.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07eb316a0237dacc8c7ad77b766aff480163bad318dfc0e92270ee52de0b964a |
|
MD5 | ff9dcca8e27ac0b8680ed4d664c0eca4 |
|
BLAKE2-256 | 9086a161df8832e2a59e3bae315f3ab6542051ae61a2a4dc46d4db3ac10beccf |
Close
Hashes for django_multipleimageinput-0.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8916d5f197d9a5f883b09e0abd2cbce040b6d08fbda391a4741e3568de58c6b6 |
|
MD5 | 33c067bd85e09b43198984a678286623 |
|
BLAKE2-256 | 458e1f591051cc22f11aee6f6338ebc14c0a77e63eb5e3ddcf4188bf079e81a9 |