Sim, sim eu até já encontrei alguns tutoriais, mas ainda esta confunso para mim. Não to conseguindo trazer as imagens relacionadas no meu template tipo determinada pessoa/cliente trazer todas as imagens relacionada a ela.
# cadastro de imagens e intalação
def imagens_cadastro(request):
template_name = 'instalacao/instalacao_imagens.html'
if request.method == "POST":
form = InstalacaoForm(request.POST, request.FILES)
if form.is_valid():
try:
form.save()
obj = form.instance
context = {
'obj': obj,
}
return render(request, template_name, context)
except:
pass
else:
form = InstalacaoForm()
img = InstalacaoImage.objects.all()
context = {
'form': form,
'img': img
}
return render(request, template_name, context)
from datetime import datetime
from django.db import models
from django.urls import reverse_lazy
from instaladores.models import Instaladores
import uuid
import os
# customização do nome do arquivo
def get_file_path(instance, filename):
ext = filename.split("."[-1])
filename = "%s.%s" % (uuid.uuid4(), ext)
return os.path.join("photos_vistoria", filename)
class Instalacao(models.Model):
INSTALADO_CHOICES = (
('NÃO', 'NÃO'),
('SIM', 'SIM'),
('PENDENTE', 'PENDENTE'),
)
VISTORIA_CHOICES = (
('NÃO', 'NÃO'),
('SIM', 'SIM')
)
placa = models.CharField('Placa', max_length=7, null=False, blank=False, unique=True)
nome = models.CharField('Associado', max_length=30, null=False, blank=False)
endereco = models.CharField('Endereço', max_length=60, null=False, blank=False)
tel01 = models.CharField('Cellular', max_length=60, null=False, blank=False)
tel02 = models.CharField('Residencial', max_length=60, null=True, blank=True)
vendedor = models.CharField('Vendedor', max_length=30, null=False, blank=False, unique=True)
instalador = models.ForeignKey(Instaladores, on_delete=models.SET_NULL, null=True, default='Não especificado')
data_pedido = models.DateTimeField(default=datetime.now, blank=True)
instalado = models.CharField(
'instalado', max_length=8,
null=True, choices=INSTALADO_CHOICES,
default=INSTALADO_CHOICES[0][0]
)
vistoria = models.CharField(
'Vistoria', max_length=3,
null=True, choices=VISTORIA_CHOICES,
default=VISTORIA_CHOICES[0][0]
)
obs = models.TextField(max_length=300, null=True, blank=True)
image = models.FileField(blank=True)
class Meta:
db_table = 'instalacao'
ordering = ["-data_pedido"]
def __str__(self):
return self.nome
def get_absolute_url(self):
return reverse_lazy('instalacao:instalacao_detail', kwargs={'pk': self.pk})
class InstalacaoImage(models.Model):
instalacao = models.ForeignKey(Instalacao, default=None, on_delete=models.CASCADE)
images = models.FileField(upload_to=get_file_path)
def __str__(self):
return self.post.title
from django.contrib import admin
from .models import Instalacao, InstalacaoImage
class InstalacaoImageAdmin(admin.StackedInline):
model = InstalacaoImage
@admin.register(Instalacao)
class InstalacaoAdmin(admin.ModelAdmin):
inlines = [InstalacaoImageAdmin]
class Meta:
model = Instalacao
@admin.register(InstalacaoImage)
class InstalacaoImageAdmin(admin.ModelAdmin):
pass
from django import forms
from django.forms.widgets import ClearableFileInput
from .models import Instalacao
class InstalacaoForm(forms.ModelForm):
# foto = forms.ImageField(widget=ClearableFileInput)
class Meta:
model = Instalacao
fields = '__all__'