Как объединить два кверисета и создать новый кверисет в django

class IndoorInventory(models.Model):
    client = models.ForeignKey(Client, on_delete=models.CASCADE)
    product = models.CharField(max_length=50)
    indoor_brand = models.CharField(max_length=100, null=True, blank=True)
    indoor_model_no = models.CharField(max_length=100, null=True, blank=True)
    indoor_sr_no = models.CharField(max_length=100, null=True, blank=True)
    outdoor_model_no = models.CharField(max_length=100, null=True, blank=True)
class OutdoorInventory(models.Model):
    client = models.ForeignKey(Client, on_delete=models.CASCADE)
    product = models.CharField(max_length=50)
    outdoor_brand = models.CharField(max_length=100, null=True, blank=True)
    outdoor_model_no= models.CharField(max_length=100, null=True, blank=True)
    outdoor_sr_no = models.CharField(max_length=100, null=True, blank=True)
    indoor_model_no= models.CharField(max_length=100, null=True, blank=True)

У меня есть две модели для двух частей кондиционера, то есть IndoorInventory для внутреннего блока, который показывает всю информацию внутреннего блока, и OutdoorInventory для отображения информации наружного блока.

Я передаю набор запросов IndoorInventory в мой шаблон Django и получаю там все данные.

введите описание изображения здесь

Теперь я хочу получить значение outdoor_sr_no из моделей OutdoorInventory и передать его в набор запросов IndoorInventory, чтобы значение outdoor_sr_no также было получено в таблице

Вы можете использовать метод цепочки, который конкатенирует наборы запросов

from itertools import chain
result_list = list(chain(q1, q2, q*))

Метод chain возвращает объект с цепочкой, поэтому вы преобразуете его в список, а затем можете получить информацию.

Вы также можете использовать метод объединения (Django Union Method)

qs1.union(qs2)

Смотрите больше информации в Как объединить два или более наборов запросов в представлении Django?

В вашем методе clientInventory вы могли бы добавить od_inven к вашему context дикту.

    context['id_inven'] = id_inven
    context['od_inven'] = od_inven

Тогда вы можете использовать это в своем шаблоне так же, как вы сейчас используете id_inven. Что-то вроде:

...
<body>
{% for foo in od_inven %}
   ...
    <td>{{ foo.id }}</td>
...
Вернуться на верх