Как я могу отфильтровать несколько таблиц, связанных вместе, и заставить их работать правильно?
Я хочу сделать фильтр для следующих таблиц, но нестандартным способом, я использовал традиционный фильтр через 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)