1
이 코드가 있지만 현재 amout을 계산하지 않습니다. 나는 일을하기 위해서 2 번을 구해야한다. 그들은 테이블에 날짜가 필요하다. 어떻게 상품을 다 대다로 합계를 계산합니까?
메뉴 클래스
가 있습니다product
description
price
합니다.
from django.db import models
from django.utils.encoding import smart_unicode
from menu.models import Menu
class Order(models.Model):
date = models.DateTimeField(auto_now_add=True, null=True)
table = models.IntegerField(null=False, max_length=2,)
products = models.ManyToManyField(Menu,through='OrderProduct')
paid = models.BooleanField(default=False)
total = models.IntegerField(,default=0,editable=False,null=True)
def save(self, *args, **kwargs):
self.total = 0
for product in self.products.all():
relationship_queryset = OrderProduct.objects.filter(order=self, product=product)
for p in relationship_queryset.all():
self.total += p.total_products
super(Order, self).save(*args, **kwargs)
def __unicode__(self):
return smart_unicode(self.table)
class OrderProduct(models.Model):
order = models.ForeignKey(Order)
product = models.ForeignKey(Menu)
num_products = models.IntegerField(max_length=2)
total_products = models.IntegerField(default=0,editable=False)
def save(self, *args, **kwargs):
self.total_products = (self.product.precio * self.num_products)
super(OrderProduct, self).save(*args, **kwargs)
갱신 2
나는이 캐시 속성에 post_save하지만 최대 재귀 깊이 내가 @cached_property의 힌트를 발견
그들을 초과 돌아가 변경하려면 사용자 정의 세비 방법 사용 . 나는 가장 좋은 방법은 알고 있지만 일하는 것은 잘 모릅니다.
@cached_property
def total(self):
x = 0
for product in self.productos.all():
relationship_queryset = OrderProduct.objects.filter(order=self, product=product)
for p in relationship_queryset.all():
x += p.total_products
return x
무엇이 문제입니까? 도움이 필요한 곳은 어디입니까? – doniyor