You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ORM:如何判断外键字段title是否已填充或为空?

判断Django外键字段是否为空的实用方法

嘿,这个问题我太熟了!在Django里判断你这种设置了blank=True, null=True的外键字段状态,其实分两种常用场景来操作就行:

1. 针对单个模型实例的判断

如果你已经拿到了一个模型对象(比如从数据库里查询出来的obj),直接检查外键属性是否为None就可以了——因为你设置了null=True,当外键未关联任何对象时,这个属性的值就是None:

# 假设你的模型是YourModel,obj是它的一个实例
if obj.title is not None:
    # 外键字段已填充,执行对应逻辑
    print("这个对象的title外键已经关联了数据")
else:
    # 外键字段为空
    print("这个对象的title外键还没关联任何数据")

另外,你也可以直接检查Django自动生成的外键ID字段(格式是[外键字段名]_id),这种方式有时候会更高效,因为不需要触发额外的数据库查询:

if obj.title_id is not None:
    # 外键已填充
    pass

2. 在数据库查询时过滤

如果你需要直接从数据库里筛选出所有外键已填充/为空的对象,可以用Django ORM的__isnull查询条件:

  • 筛选外键已填充的记录:
from your_app.models import YourModel

filled_title_objects = YourModel.objects.filter(title__isnull=False)
  • 筛选外键为空的记录:
empty_title_objects = YourModel.objects.filter(title__isnull=True)

小提醒

这里要区分下blank=True和null=True的作用:blank=True是给表单验证用的,允许表单提交时该字段为空;而null=True是给数据库用的,允许数据库中该字段存储NULL值。我们上面的判断逻辑都是基于数据库层面的NULL状态,刚好对应你设置的null=True。

内容的提问来源于stack exchange,提问作者user11149657

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:05:18