En Django puede usar la exclusión para crear SQL similar a not equal
. Un ejemplo podría ser.¿Cómo excluir resultados con get_object_or_404?
Model.objects.exclude(status='deleted')
Ahora esto funciona muy bien y excluir es muy flexible. Como soy un poco flojo, me gustaría obtener esa funcionalidad cuando utilizo get_object_or_404
, pero no he encontrado una manera de hacerlo, ya que no puede usar exclude en get_object_or_404
.
Lo que yo quiero es hacer algo como esto:
model = get_object_or_404(pk=id, status__exclude='deleted')
Pero lamentablemente esto no funciona, ya que no es un filtro de consulta excluir o similar. El mejor que he encontrado hasta el momento está haciendo algo como esto:
object = get_object_or_404(pk=id)
if object.status == 'deleted':
return HttpResponseNotfound('text')
Hacer algo así, realmente se pierde el punto de utilizar get_object_or_404
, puesto que ya no es un práctico de una sola línea.
alternativa que podía hacer:
object = get_object_or_404(pk=id, status__in=['list', 'of', 'items'])
Pero eso no sería muy fácil de mantener, ya que tendría que mantener la lista actualizada.
Me pregunto si me falta algún truco o función en django para usar get_object_or_404
para obtener el resultado deseado?
No es realmente una respuesta, pero parece que en realidad no desea 404 para un objeto eliminado. El objetivo de la eliminación suave es mantener el objeto "por las dudas". –