Перехват ошибок при запросе в Django полей, которых нет в базе данных или модели - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь отловить ошибки полей, которых нет ни в модели, ни в базе данных. Для этого я использую подход EAFP.

Но это не работает, я получаю следующую ошибку:

Невозможно разрешить ключевое слово 'bin_height_mm_des c' в поле. Выборы:

def DeviceDetailView(request, device_id):   
    tbl_dict = {}
    try:
        tbl_dict  = Bin.objects.values('bin_height_mm_desc', 'received_at_ymd', 'received_at_hm')
    except (ValueError, TypeError, AttributeError) as e:
         tbl_dict = e   

   context = {
        'tbl_data' : tbl_dict,
    }

return render(request, 'applications/device.detail.html', context)

1 Ответ

1 голос
/ 14 февраля 2020

Вы должны использовать django.core.exceptions.FieldError.

    def DeviceDetailView(request,device_id):   
        tbl_dict = {}
        try:
            tbl_dict  = Bin.objects.values('bin_height_mm_desc','received_at_ymd','received_at_hm')
        except FieldError as e:
             tbl_dict = e   

        context = {
        'tbl_data' : tbl_dict,
       } 

Этот класс является подклассом NameError, поэтому вы также можете перехватывать NameError. Чтобы узнать, какое исключение возникает, вы можете попробовать что-то вроде ниже.

try:
    tbl_dict  = Bin.objects.values('bin_height_mm_desc','received_at_ymd','received_at_hm')
except Exception as e:
    print(e.__name__)
    print(e.__class__)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...