我不清楚这是否可以通过ORM实现 - 它似乎不是这样,但也许我错过了什么?
class ApplicationInstitution(models.Model):
...
transcript_file = FileField(upload_to=...)
其中一些ApplicationInstitution
个对象可能已经上传了transcript_file
,而其他人则没有。我想查询具有空FileField的实例。起初我以为我可以像
ApplicationInstitution.objects.filter(transcript_file__isnull=False)
或类似,但这会产生意外结果(所有记录或零,取决于您使用filter
还是exclude
)。如果你试图访问实际的文件对象,你会得到一个Raise,而不是一个空的:
>>> a.institutions.last().transcript_file.file
Traceback (most recent call last):
...
ValueError: The 'transcript_file' attribute has no file associated with it.
我已经使用try / except编写了一个模型方法来获得答案,但ORM会更清晰。是否可以查询空的或非空的FileFields?
答案 0 :(得分:2)
您可以查询空字符串:
# instances with empty FileField
ApplicationInstitution.objects.filter(transcript_file='')
# and with a file already uploaded
ApplicationInstitution.objects.exclude(transcript_file='')
答案 1 :(得分:-1)
DBRef
并尝试使用transcript_file = FileField(upload_to=..., null=True)
而不使用文件:
ApplicationInstitution
带文件的ApplicationInstitution.objects.filter(transcript_file__isnull=True)
的:
ApplicationInstitution