questão Django ImageField

votos
10

Eu tenho um modelo semelhante

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)

Como podemos ver campo foto é opcional. Eu queria que todos os estudantes que tenham suas imagens salvas no DB faculdade. Por que eu fiz isso

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

Mas eu estou recebendo este erro:

FieldError: Join on field 'photo' not permitted.

Então, como eu posso extrair todos aqueles estudantes que têm suas fotos?

Qualquer tipo de ajuda sobre isso seria apreciada. Desde já, obrigado.

Publicado 12/05/2009 em 09:55
fonte usuário
Em outras línguas...                            


1 respostas

votos
12

Ele não funciona porque as pesquisas de campo só funcionam em outros modelos. Aqui, nameé um atributo no valor de retorno do seu photocampo.

Tente isto em vez disso:

Student.objects.exclude(photo__isnull=True)

É preferível usar isnullem vez de comparar a igualdade para None.

EDITAR:

Jeff Ober sugestão 's:

Student.objects.exclude(photo='')

Ele diz que a filtragem é executada nos valores reais armazenados no DB. No caso de um campo de arquivo do caminho para o arquivo.

Respondeu 12/05/2009 em 10:57
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more