|
4 | 4 | from operator import and_, or_ |
5 | 5 |
|
6 | 6 | from django.conf import settings |
7 | | -from django.core.exceptions import ImproperlyConfigured, ValidationError |
| 7 | +from django.core.exceptions import ImproperlyConfigured, ValidationError, ObjectDoesNotExist |
8 | 8 | from django.db import connections, models |
9 | 9 | from django.db.models.aggregates import Aggregate |
10 | 10 | from django.db.models.expressions import F, Value, Q |
@@ -166,10 +166,13 @@ def get_inode(self, **lookup): |
166 | 166 | folder_qs = FolderModel.objects.none() |
167 | 167 | elif (folder_qs := FolderModel.objects.filter(**lookup)).exists(): |
168 | 168 | return folder_qs.get() |
169 | | - values = folder_qs.values('id', mime_type=Value(None, output_field=models.CharField())).union(*[ |
170 | | - model.objects.values('id', 'mime_type').filter(self.get_query(model, lookup)) |
171 | | - for model in FileModel.get_models() |
172 | | - ]).get() |
| 169 | + try: |
| 170 | + values = folder_qs.values('id', mime_type=Value(None, output_field=models.CharField())).union(*[ |
| 171 | + model.objects.values('id', 'mime_type').filter(self.get_query(model, lookup)) |
| 172 | + for model in FileModel.get_models() |
| 173 | + ]).get() |
| 174 | + except FolderModel.DoesNotExist: |
| 175 | + raise self.model.DoesNotExist(f"No inode found matching the given lookup: {lookup}.") |
173 | 176 | return FileModel.objects.get_model_for(values['mime_type']).objects.get(id=values['id']) |
174 | 177 |
|
175 | 178 | @classmethod |
|
0 commit comments