【问题标题】:Django Models compare 2 model and filterDjango 模型比较 2 模型和过滤器
【发布时间】:2020-08-19 18:26:37
【问题描述】:

我想获取对应另一个模型的模型详细信息

我的模型.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外键中的摄像头详情(指未使用设备外键的摄像头详情)

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      这是因为 Django 将创建一个LEFT OUTER JOIN,所以如果没有设备存在,它将添加一行 NULL 作为与 Device 相关的列的值。

      【讨论】:

      • 谢谢.. 这个方法也行。 :) .. 我不能为 2 个答案添加勾选 .. 抱歉 .. 这个答案也有效 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2017-06-22
      • 2013-03-16
      相关资源
      最近更新 更多