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

Django Models compare 2 model and filter

我想获取对应其他型号的型号详情

我的models.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)

您可以检查相关模型(此处 device)为 None/NULL:

Camera 个对象
Camera.objects.filter(<b>device=None</b>)

这很有效,因为 Django 会创建一个 LEFT OUTER JOIN,所以如果没有设备,它会添加一行 NULL 作为与 [=16= 相关的列的值].