<分区>
title = models.ForeignKey(blank=True, null=True)
我正在尝试检查 title filed 是填充还是空白,我该如何实现?
标签 django django-orm
<分区>
title = models.ForeignKey(blank=True, null=True)
我正在尝试检查 title filed 是填充还是空白,我该如何实现?
最佳答案
为此,Django 文档围绕 querysets和 q objects会成为你的 friend 。
检查某物是否为 null
或 ''
(空)一开始有点棘手,但一旦您理解了 SQL 和 Django ORM,它就会变得更容易。
首先要说明的是 null != ''
在 SQL 中它们是两个不同的值。这篇文章的前两个答案是不正确的,因为他们没有阅读您的问题。
基本上,您可以根据用例执行三项检查,
YourModel.objects.filter(title='')
YourModel.objects.filter(title__isnull=True)
YourModel.objects.filter(Q(title='') | Q(title__isnull=True))
在您的情况下,您需要选项 3,因为您要求的结果集在结果集中显示 null 和空值。
例子:
# models.py
class TestModel(models.Model):
a = models.CharField(max_length=10, blank=True, null=True)
# code
TestModel.objects.create() # id: 0
TestModel.objects.create(a='') # id: 1
TestModel.objects.create(a='a value') # id: 2
# option 1 above
TestModel.objects.filter(a__isnull=True)
#> <QuerySet [<TestModel: TestModel object (1)>]>
#option 2 above
TestModel.objects.filter(a='')
#> <QuerySet [<TestModel: TestModel object (2)>]>
#option 3 above
from django.db.models import Q
TestModel.objects.filter(Q(a='') | Q(a__isnull=True))
#> <QuerySet [<TestModel: TestModel object (1)>, <TestModel: TestModel object (2)>]>
关于 Django ORM : checking if a field is blank or filled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57110082/