Django ImageField проблема - PullRequest
       6

Django ImageField проблема

10 голосов
/ 12 мая 2009

У меня есть похожая модель

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 Ответ

12 голосов
/ 12 мая 2009

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

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

Student.objects.exclude(photo__isnull=True)

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

EDIT:

Джефф Обер предложение:

Student.objects.exclude(photo='')

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

...