title = models.ForeignKey(blank=True, null=True)
我正在尝试检查标题字段是否已填充或空白,我该如何实现?
答案 0 :(得分:1)
Name: <MY_DESTINATION>
Type: HTTP
URL: http://... //this matches the cloud connector host, i.e. in SAP Cloud Platform Cockpit --> Cloud Connectors --> Exposed Back-End Systems
ProxyType: OnPremise
Authentication: BasicAuthentication
User: <USERNAME>
Password: <PASSWORD>
可以检查字段是否为空
isnull
这将返回所有没有标题的对象。
答案 1 :(得分:-1)
我正在尝试检查标题字段是否已填充或空白,我该如何实现?
blank
不是一个值。空白表示该字段不需要表格(不会显示)。通常,如果是blank=True
,则也要null=True
(或者您需要提供一个明确的默认值)。
您可以使用None
,它等效于Python NULL
,例如:
MyModel.objects.filter(title=None)
或者您可以使用__isnull
[Django-doc]查找使它更明确:
MyModel.objects.filter(title__isnull=True)
答案 2 :(得分:-1)
为此,querysets和q objects周围的Django文档将成为您的朋友。
一开始检查某物是null
还是''
(空)有点棘手,但是一旦您了解了SQL和Django ORM,它将变得更加容易。
首先要说明的是SQL中的null != ''
,它们是两个不同的值。该帖子的前两个答案不正确,因为它们尚未准备好您的问题。
根据用例,基本上可以执行三项检查,
YourModel.objects.filter(title='')
YourModel.objects.filter(title__isnull=True)
YourModel.objects.filter(Q(title='') | Q(title__isnull=True))
在您的情况下,您要的是选项3,因为它要求一个结果集,该结果集显示结果集中的空值和空值。
示例:
# 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)>]>