Django Models比较2个模型和过滤器

问题描述

我想获取与其他模型相对应的模型详细信息

我的模型。py

class Device(models.Model):
    DeviceName = models.CharField(max_length=50,null=True,default=None,blank=True)
    Camera = models.ForeignKey(Camera,on_delete=models.CASCADE,db_column='CameraId')

    class Meta:
        db_table = "Device"

class Camera(models.Model):
    CameraId = models.AutoField(primary_key=True,db_column='CameraId')
    CameraName = models.CharField(max_length=50)

    class Meta:
        db_table = "Camera"

我想要我的相机详细信息

即未保存在设备外键中的摄像机详细信息(表示未使用设备外键的摄像机详细信息)

解决方法

尝试使用 device__isnull=True 过滤器(参考:Django isnull查找)

camera_without_devices = Camera.objects.filter(device__isnull=True)
,

您可以检查相关模型(此处为Camera)为device / None的{​​{1}}个对象:

NULL

这很麻烦,因为Django将创建一个Camera.objects.filter(device=None),因此如果没有设备存在,它将为LEFT OUTER JOIN的相关列添加一个带有NULL的行。