W Django można użyć wykluczenia do utworzenia SQL podobnego do not equal
. Przykładem może być.Jak wykluczyć wyniki za pomocą get_object_or_404?
Model.objects.exclude(status='deleted')
To działa świetnie, a wykluczenie jest bardzo elastyczne. Ponieważ jestem trochę leniwy, chciałbym, aby ta funkcjonalność podczas korzystania get_object_or_404
, ale nie znaleźli sposób, aby to zrobić, ponieważ nie można wykluczyć na get_object_or_404
używać.
Co chcę to zrobić coś takiego:
model = get_object_or_404(pk=id, status__exclude='deleted')
Ale niestety to nie działa, ponieważ nie jest wykluczenie filtr kwerendy lub podobny. Najlepszym Mam wymyślić do tej pory robi coś takiego:
object = get_object_or_404(pk=id)
if object.status == 'deleted':
return HttpResponseNotfound('text')
Robi coś takiego, naprawdę pokonuje punkt za pomocą get_object_or_404
, ponieważ nie jest już przydatny jedno-liner.
Ewentualnie mogę zrobić:
object = get_object_or_404(pk=id, status__in=['list', 'of', 'items'])
Ale to nie byłoby bardzo utrzymaniu, gdyż muszę zachować listę aktualne.
Zastanawiam się, czy brakuje mi jakiejś sztuczki lub funkcji w django, aby użyć get_object_or_404
, aby uzyskać pożądany wynik?
To nie jest odpowiedź, ale wygląda na to, że nie chcemy 404 dla miękkiego usuniętego obiektu. Celem delikatnego usuwania jest zatrzymanie obiektu "na wszelki wypadek". –