Spo*_*k16 10 python django postgresql django-queryset
我正在尝试过滤查询集,以排除没有文件的查询集.除了无数次迭代之外,我无法让它工作.
class Something(models.Model):
name = models.CharField(max_length=512)
file = models.FieldField(upload_to="files", null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
然后,获取一个文件
# this give me all objects
Something.objects.exclude(file__exact='')
# this is a valid solution, but hell, something easier should exist,
something_with_files = set()
for s in Something.objects.all():
if s.file:
something_with_files.add(s)
Run Code Online (Sandbox Code Playgroud)
这是什么真正的解决方案?
PS:在PostGres上工作,不知道那时能不能改变什么.
Eug*_*tov 18
这里没有必要:
Something.objects.exclude(file='')
Run Code Online (Sandbox Code Playgroud)
这对我来说非常有效:
objects = MyModel.objects.exclude(
Q(file='')|Q(file=None)
)
Run Code Online (Sandbox Code Playgroud)
https://books.agiliq.com/projects/django-orm-cookbook/en/latest/filefield.html
我认为有更好的选择:
from django.db.models import Q
Something.objects.filter(~Q(file__isnull=True))
Run Code Online (Sandbox Code Playgroud)
要么
Something.objects.exclude(file__isnull=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8965 次 |
| 最近记录: |