Проблема с Django ImageField

У меня есть аналогичная модель

Class Student(models.Model):
"""A simple class which holds the basic info
of a student."""

name = models.CharField(max_length=50)
age = models.PositiveIntegerField()
photo = models.ImageField(upload_to='foobar', blank=True, null=True)

Как мы можем видеть, поле фотографий необязательно. Я хотел, чтобы все ученики, у которых есть свои изображения, были сохранены в БД колледжа. Для этого я сделал это

>>> Student.objects.exclude(photo__name=None)

Но я получаю эту ошибку:

FieldError: Join on field 'photo' not permitted.

Итак, как я могу извлечь всех этих учеников, имеющих свои фотографии?

Любая помощь в этом отношении будет оценена по достоинству. Спасибо заранее.

Ответ 1

Это не работает, потому что поиск в поле работает только на других моделях. Здесь name - это атрибут возвращаемого значения вашего поля photo.

Попробуйте это вместо:

Student.objects.exclude(photo__isnull=True)

Предпочтительно использовать isnull вместо сравнения равенства с None.

EDIT:

Джефф Обер:

Student.objects.exclude(photo='')

Он говорит, что фильтрация выполняется по фактическим значениям, хранящимся в БД. В поле файла укажите путь к файлу.