Как я могу отфильтровать несколько таблиц, связанных вместе, и заставить их работать правильно?

Я хочу сделать фильтр для следующих таблиц, но нестандартным способом, я использовал традиционный фильтр через objects.row, но этот метод приносит мне много проблем

Я владею несколькими столами

class Store(ModelUseBranch):
    name = models.CharField(verbose_name=_("Name"), max_length=50, unique=True)
    is_stoped = models.BooleanField(verbose_name=_("Is Stopped"), default=False)
    def __str__(self):
       return self.name
    class Meta:
        verbose_name = _("Store")

class Item(ModelUseBranch):
     name = models.CharField(verbose_name=_("name"), max_length=50, unique=True)
     def __str__(self):
          return self.name
     class Meta:
          verbose_name = _("Item")

class ItemMainData(CustomModel):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    is_stopped = models.BooleanField(verbose_name=_("Is Stopped"), default=False)
    use_expir_date = models.BooleanField(
        verbose_name=_("Use Expiration Date"), default=False
    )
    def __str__(self):
        return str(self.item)
    class Meta:
        verbose_name = _("ItemMainData")


class StoreQuantity(CustomModel):
    item = models.ForeignKey(Item, on_delete=models.PROTECT, blank=True,verbose_name=_("Item"))
    qty = models.PositiveIntegerField(verbose_name=_("qty"),)
    store = models.ForeignKey(Store, on_delete=models.PROTECT, blank=True,verbose_name=_("store"))
    expire_date = models.DateField(verbose_name=_("expire date"), null=True, blank=True)

    class Meta:
        verbose_name = _("Store Quantity")

    def __str__(self):
        return str(self.expire_date)+"  "+str(self.qty)+"  "+str(self.store)

Теперь я хочу сделать запрос через orm с этим

sql = "SELECT DISTINCT  warehouse_item.id ,warehouse_item.name_ar , warehouse_store.name,qty,expire_date FROM warehouse_storequantity,public.warehouse_item ,public.warehouse_itemmaindata,public.warehouse_store WHERE date (warehouse_storequantity.expire_date) - date (now()) <= (SELECT 0 FROM  warehouse_storequantity,public.warehouse_item ,public.warehouse_itemmaindata,public.warehouse_store where warehouse_item.id = warehouse_itemmaindata.item_id and warehouse_item.id = warehouse_storequantity.item_id and warehouse_store.id = warehouse_storequantity.store_id and warehouse_itemmaindata.use_expir_date='1')"

Я пытался, но не достиг желаемой цели

StoreQuantity.objects.values(
                    "pk", "item__name_ar", "store__name", "qty", "expire_date"
                )
                .filter(item_id__in=col2)
Вернуться на верх