我有一个类似的模型
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.
那么,我怎样才能提取所有拥有照片的学生?
对此有任何帮助,我们将不胜感激。 提前谢谢。
答案 0 :(得分:12)
它不起作用,因为field lookups仅适用于其他模型。在此处,name
是您photo
字段的返回值的属性。
请改为尝试:
Student.objects.exclude(photo__isnull=True)
最好使用isnull
,而不是将等式与None
进行比较。
Jeff Ober的建议:
Student.objects.exclude(photo='')
他说过滤是对存储在DB中的实际值进行的。在文件字段的情况下,文件的路径。