0
我想要訪問有關反向關係的數據,我試圖列出所有銷售的一天,但我不知道正確的方法來做反向關係。許多到很多通過模板中的關係逆轉
- 模板上有一些方法嗎?
- 更好的做視圖或做了一些自定義過濾器?
模型
class Product(models.Model):
name = models.CharField(null=True, max_length=30,)
price = models.IntegerField(default=0)
description = models.CharField(null=True, max_length=100,)
class Order(models.Model):
date = models.DateTimeField(auto_now_add=True, null=True)
table = models.IntegerField(null=False, max_length=2,)
waiter = models.ForeignKey(User, null=True,default=None)
products = models.ManyToManyField(Product,through='OrderProduct')
paid = models.BooleanField(default=False)
total = models.IntegerField(default=0,editable=False,null=True)
@cached_property
def total(self):
x = 0
for product in self.products.all():
relationship_queryset = OrderProduct.objects.filter(order=self, product=product)
for p in relationship_queryset.all():
x += p.total_products
return x
class OrderProduct(models.Model):
order = models.ForeignKey(Order)
product = models.ForeignKey(Product)
products_quantity = models.IntegerField(max_length=2)
products_total = models.IntegerField(default=0,editable=False)
def save(self, *args, **kwargs):
self.products_total = (self.product.price * self.products_quantity)
super(OrderProduct, self).save(*args, **kwargs)
視圖
def sales(request):
today = datetime.utcnow()
today_sales = m.Order.objects.filter(date=today).all()
return render_to_response('pages/sales.html',{'request':request,'sales':today_sales})
模板
{% for sale in sales %}
<ul>{{ sale.date }}|{{ sale.paid }}|{{ sale.total }}</ul>
!! Here i wanna put the products from the current sale !!
{% for product in sales.products %}
{{ product.name }}|{{ product.price }}|{{ product.products_quantity }}|{{ product.products_total }}
{% endfor %}
{% endfor %}
它的作品!,非常感謝你:) – iMaGiNiX