Модели Django сравнивают 2 модели и фильтр

#django #django-models #django-rest-framework #django-serializer

#django #django-модели #django-rest-framework #django-сериализатор

Вопрос:

я хочу получить детали модели с соответствующей другой моделью

мой 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"
  

мне нужны данные о моей камере

это сведения о камере, которые не сохранены во внешнем ключе устройства (означает сведения о камере, которые не использовали внешний ключ для устройства)

Ответ №1:

Попробуйте использовать device__isnull=True filter (ссылка: Django isnull lookup)

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

Ответ №2:

Вы можете проверить, есть ли Camera объекты, для которых соответствующая модель (здесь device ) является None / NULL :

 Camera.objects.filter(device=None)  

Это происходит потому, что Django создаст LEFT OUTER JOIN , поэтому в случае отсутствия устройства он добавит одну строку с NULL значением as для столбцов, связанных с Device .

Комментарии:

1. Спасибо.. Этот метод также работает. 🙂 .. я не могу добавить галочку для ответа 2 .. извините.. Этот ответ также работает 🙂