Я пытаюсь запустить запрос filter()
, фильтруя на основе родственной модели, и он выбрасывает исключение DoesNotExist
.Django filter() query throwing Исключение DoNotExist
CourseMember.objects.filter(user__last_name__icontains='comadena')
Я был в предположении, что фильтрация не выбрасывает никаких исключений DoesNotExist, а просто возвращает пустой QuerySet, если совпадений не осталось. Есть ли какие-то другие get()
, так как я технически запрашиваю связанную таблицу для фильтра?
Кроме того, как ни странно, ошибка возникает только для данного значения поиска user__last_name__icontains
. Он работает с другими значениями, как 'smith'
, 'johnson'
, 'frink'
и т.д.
Модели:
class User(AbstractBaseUser):
email = models.EmailField(blank=True, null=True, unique=True, max_length=254)
first_name = models.TextField(blank=True)
last_name = models.TextField(blank=True)
is_superuser = models.BooleanField(default=False)
class Course(models.Model):
coursenum = models.TextField(blank=True, null=True, db_index=True)
title = models.TextField(blank=True, null=True)
school = models.TextField(blank=True, null=True)
category = models.TextField(blank=True, null=True)
class CourseMember(models.Model):
create_date = models.DateTimeField(auto_add_now=True)
course = models.ForeignKey(Course)
user = models.ForeignKey(User)
role = models.TextField(blank=True, null=True, db_index=True)
section = models.TextField(blank=True, null=True, db_index=True)
Вот сообщение об ошибке при запуске запроса в терминале:
CourseMember.objects.filter(user__last_name__icontains='comadena')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py", line 119, in __repr__
return repr(data)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py", line 459, in __repr__
u = six.text_type(self)
File "/home/bookeducator/go/course/models.py", line 236, in __str__
return 'CourseMember: %s (%s)' % (self.user.email, self.role)
File "/usr/local/lib/python3.4/dist-packages/django/db/models/fields/related.py", line 572, in __get__
rel_obj = qs.get()
File "/usr/local/lib/python3.4/dist-packages/django/db/models/query.py", line 357, in get
self.model._meta.object_name)
account.models.DoesNotExist: User matching query does not exist.
Не могли бы вы предоставить свои соответствующие определения моделей и полную трассировку, которую вы получаете? Благодарю. – alecxe
Надеюсь, редактирование поможет. – ngoue