как применить сложный запрос ORM в Django - PullRequest
0 голосов
/ 11 мая 2018

у меня 3 модели. Я использую биллменагмент для даты и счета клиента В таблице сохраняются записи о продаже товара, о том, сколько товаров продано. Я использую запрос ORM Django и получаю записывайте правильно, но мне нужны также те товары, которые не продаются, а в моем продукте покупателя просто сохраняйте запись о продаже товара. Мне нужен продукт продажи, а не продажи, потому что я занимаюсь разработкой книги инвентаризации, которая показывает все записи. Вот мой вопрос:

products = Product.objects.all().order_by('id')
    ---------------------------------------------------
product_sale_history = BillManagement.objects.filter(Q(creation_date__gte=from_date) &
                                                                             Q(creation_date__lte=to_date) & Q(product__in=products) ).exclude(
                            Q(customer_id=1248)).values('customerproductbill__product_id')\
                            .annotate(sale_quantity = Coalesce(Sum('customerproductbill__product_qty'), 0)).order_by('customerproductbill__product_id')
​
​
​
class Product(models.Model):
    """ Represent an Inventory Product entity  """
​
    product_name = models.CharField(max_length=512, null=True, blank=True)
     reference_number =  models.CharField(max_length=20, null=True, blank= True, unique=True)
​
class Meta:
​
    verbose_name_plural = 'Inventory Products'
​
    def __unicode__(self):
           return self.product_name
            -------------------------------------------------------
​
class BillManagement(models.Model):
    """ Represent a Bill entity"""
    bill_number = models.CharField(max_length=250, null=True, blank=True)
    creation_date = models.DateField(auto_now_add=True)
​
    product = models.ManyToManyField(Product,through='CustomerProductBill',
                                                     related_name='customer_product_bill')
class Meta:
    verbose_name_plural = 'BillManagements'
    ordering = ['creation_date']
​
    def __unicode__(self):
        return self.creation_date
        ------------------------------------------------
class CustomerProductBill(models.Model):
    """ Represent a CustomerProductBill entity """
    bill = models.ForeignKey(BillManagement, null=True, blank=True)
    product = models.ForeignKey(Product, null=True, blank=True)
    product_qty = models.IntegerField(null=False, blank=False, default=0)
class Meta:
    verbose_name_plural = 'CustomerProductBill'
    ordering = ['product']
​
    def __unicode__(self):
        return self.product.product_name

Может ли кто-нибудь изменить мой запрос. Как я могу получить продажу, а не продажу товара в таблице, используя запрос формы django

...