BTC $86,257.00 +0,11%
ETH $2,714.38 -0,08%
SOL $120.32 -0,31%
BNB $783.54 -0,82%
XRP $1.51 -0,33%
ADA $0.2793 +2,71%
LINK $14.07 -0,94%
DOGE $0.0957 -0,53%
AVAX $11.44 +3,97%
HYPE $93.71 +0,33%
SUI $1.21 -2,98%
BTC $86,257.00 +0,11%
ETH $2,714.38 -0,08%
SOL $120.32 -0,31%
BNB $783.54 -0,82%
XRP $1.51 -0,33%
ADA $0.2793 +2,71%
LINK $14.07 -0,94%
DOGE $0.0957 -0,53%
AVAX $11.44 +3,97%
HYPE $93.71 +0,33%
SUI $1.21 -2,98%
WISKTON.XYZ Logo
Dev Iniciante [LEVEL 1]

Utilizando django-admin-multiupload

Utilizando django-admin-multiupload

Instalação e Configuração

Instalar em seu env

pip install git+git://github.com/gkuhn1/django-admin-multiupload.git

Add 'multiupload' to your INSTALLED_APPS

INSTALLED_APPS = (
'multiupload',
)

Exemplo

model

from django.db import models
from sorl.thumbnail import ImageField
from django.template.defaultfilters import slugify

def rename_file_and_upload_to(objeto, arquivo):
"""
Essa função irá normalizar como um slug, o nome do arquivo que está sendo gravado e, irá gravá-lo
em /media/uploads/APPNAME_CLASSNAME/nome_do_arquivo_normalizado.extensao
"""
import os
caminho = str( '%s/%s' % ( objeto._meta.app_label, objeto.__class__.__name__ ) ).lower()
nome, ext = os.path.splitext( arquivo )
url = slugify( nome[:15] )
return os.path.join( 'uploads', caminho, url+ext )

class Imagem(models.Model):

class Meta:
ordering = ('nome', )
verbose_name = 'Imagem'
verbose_name_plural = 'Imagens'

nome = models.CharField(max_length=255)
img = ImageField(
u'Imagem', upload_to=rename_file_and_upload_to, max_length=255
)

def imagemAdmin(self):
from sorl.thumbnail import get_thumbnail
if self.img:
try:
im = get_thumbnail(self.img, '100x70', quality=80)
return ''.format(im.url)
except:
return ''
return ''
imagemAdmin.is_safe = True
imagemAdmin.allow_tags = True
imagemAdmin.short_description = u'Imagem'

def imagem(self):
from django.conf import settings
from sorl.thumbnail import get_thumbnail

if self.img:
try:
im = get_thumbnail(self.img, '80x45', quality=80)
return im.url
except:
return ''

return ''

def __unicode__(self):
return self.nome

def url(self):
return reverse('imagem', args=(self.slug,))

admin

# -*- coding: utf-8 -*-
from django.contrib import admin
from multiupload.admin import MultiUploadAdmin
from sorl.thumbnail.admin import AdminImageMixin
from models import Imagem

class ImagemAdmin(AdminImageMixin, MultiUploadAdmin):
list_display = ('nome', 'imagemAdmin', )

# default value of all parameters:
change_form_template = 'multiupload/change_form.html'
change_list_template = 'multiupload/change_list.html'
multiupload_template = 'multiupload/upload.html'
# if true, enable multiupload on list screen
# generaly used when the model is the uploaded element
multiupload_list = True
# if true enable multiupload on edit screen
# generaly used when the model is a container for uploaded files
# eg: gallery
# can upload files direct inside a gallery.
multiupload_form = True
# max allowed filesize for uploads in bytes
# 3 Mb
multiupload_maxfilesize = 3 * 2 ** 20
# min allowed filesize for uploads in bytes
multiupload_minfilesize = 0
# tuple with mimetype accepted
multiupload_acceptedformats = (
"image/jpeg",
"image/pjpeg",
"image/png",
)

def process_uploaded_file(self, uploaded, object, request):

# example:
title = request.POST.get('title', '') or uploaded.name
f = Imagem(nome=title, img=uploaded)
f.save()
return {
'url': f.imagem(),
'thumbnail_url': f.imagem(),
'id': f.id,
'name': f.nome,
}

def delete_file(self, pk, request):
'''
Function to delete a file.
'''
# This is the default implementation.
obj = get_object_or_404(self.queryset(request), pk=pk)
obj.delete()

admin.site.register(Imagem, ImagemAdmin)
AVISO DE SEGURANÇA (DYOR): Todo o conteúdo do wiskton.xyz tem caráter estritamente educativo e informativo. Criptoativos envolvem volatilidade e riscos cibernéticos. Jamais compartilhe sua seed phrase ou chaves privadas com terceiros.
// TRANSMISSÃO DE DADOS // COMPARTILHE ESTE PROTOCOLO
CYPHERPUNK BROADCAST NETWORK
wiskton
[ESCRITO POR]

Willem (WISKTON) Allan

Editor-Chefe, Desenvolvedor & Pesquisador Cypherpunk

Youtuber, Programador, investidor, fanático em tecnologia, fã de dragon ball, artista marcial, futebolista amador e gamer nas horas vagas.

// DISCUSSÃO & COMENTÁRIOS (0)
MODERADO VIA MATRIX

DEIXE UMA RESPOSTA

Nenhum comentário registrado ainda. Seja o primeiro a comentar!

// POSTS RELACIONADOS DA CATEGORIA

// MATRIX BUFFER LINK COPIADO COM SUCESSO!