1
resposta

Gostaria de saber como faz para associar User a fotografia sem utilizar o painel admin

Olá, na aula 4-validações - associando tabelas - curso django: autenticação de formulários e alerta. foi dado um exemplo criando uma chave estrangeira de usuario no model fotografia, porém foi feita a vinculação pelo painel do admin do django. gostaria de saber como eu faço essa vinculação em um método de exemplo. que eu uso para salvar uma fotografia. já li a documentação mas não estou conseguindo entender. tipo quando um usuario logado no site, faz um upload eu preciso capturar o usuario logado e usar ele em um metodo "save_fotografia"

usuario = models.ForeignKey(
    to=User,
    on_delete=models.SET_NULL,
    null=True,
    blank=False,
    related_name='user'
)
1 resposta

Olá Fábio, como você está?

Peço desculpas pela demora em obter um retorno.

Uma forma de realizar este procedimento é utilizar a função request.user para acessar as informações do usuário na view. Então, você pode passar esse usuário para o método save_fotografia() quando salvar a fotografia.

Exemplo:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Fotografia

def upload_fotografia(request):
    if request.method == 'POST':
        fotografia = request.FILES.get('fotografia')
        if fotografia:
            nova_fotografia = Fotografia()
            nova_fotografia.imagem = fotografia
            nova_fotografia.usuario = request.user
            nova_fotografia.save()

            return HttpResponse('Fotografia salva com sucesso!')
    return render(request, 'upload_fotografia.html')

Neste caso, para usar request.user, você precisa garantir que o usuário esteja autenticado antes de chamar a view que executa o upload da fotografia. Caso contrário, request.user será AnonymousUser.

Espero ter ajudado. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!