Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Bloquear acesso ao detalhes da receita em modo edição

No tópico 3, sobre filtro de receitas publicadas, foi incluído um filtro na função index para retornar apenas objetos com a flag publicada com o valor True. Porém, ainda é possível acessar os detalhes na receita pela rota receita/<id>.

Como seria possível aplicar o mesmo filtro na função que está utilizando o get_object_or_404 da view de receita?

1 resposta
solução!

Olá João, como você está? Espero que esteja bem ^-^

Muito bem observado!

A função get_object_or_404, recebe como parâmetro um modelo ou QuerySets que nada mais são do que consultas sql geradas a partir de dados do banco. E o filter é um tipo de QuerySet. Então podemos modificar a função get_object_or_404 para o seguinte:

queryset = Receita.objects.filter(publicada=True)
receita = get_object_or_404(queryset, pk=receita_id)

Uma forma mais simples ainda, seria passar o parâmetro nomeado publicada para a função, da seguinte forma:

receita = get_object_or_404(Receita, publicada=True, pk=receita_id)

Porém, a primeira maneira pode ser útil se você receber uma variável de queryset de outro lugar ou se porventura quiser encadear mais métodos.

Tudo bem?!

Qualquer dúvida é só falar, fico à disposição. Abraços e bons estudos!