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

时间:2020-08-19 18:26:37

标签: django django-models django-rest-framework django-serializer

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

我的模型。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"

我想要我的相机详细信息

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

NULL

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

相关问题