Как объединить два кверисета и создать новый кверисет в 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>
...