0
나는 전자 상점 장고 해골에 대해 얇게보고있다.Django : 항목 연장 가능 할인 계산
# models.py
class Category(models.Model):
name = models.CharField()
discount = models.DecimalField()
class Product(models.Model):
name = models.CharField()
price = models.DecimalField()
category = models.ForeignKey(Category)
discount = models.DecimalField()
이제 제품 최종 할인을 계산해야합니다. 제품 및 카테고리 할인 중 가장 큰 제품 :
class Product(models.Model):
...
def get_final_discount(self):
return max([self.discount, self.category.discount])
하지만 이제 브랜드 모델로 모델을 확장해야합니다. 브랜드 모델에는 자체 할인이 있으므로 최종 제품 가격 계산에서 브랜드의 할인을 고려하려면 Product.get_final_discount() 메소드를 수정해야합니다.
질문 : 오픈 클로즈 원칙을 위반하지 않는 최종 제품 할인 방법을 구현하는 가장 좋은 방법은 무엇입니까?
당신은 "나는 브랜드 모델로 내 모델을 확장 할 필요"가 무엇을 의미합니까? 브랜드 모델 또는 브랜드 모델에서 카테고리, 제품 또는 둘 다에 외래 키를 추가 하시겠습니까? 아니면 하위 모델 브랜드 모델을 원하십니까? –
@VladimirDanilov이 경우 제품에서 FK를 브랜드에 추가해야합니다. 또한 나는 제품에서 동일한 FK를 자신의 할인 가격으로 모델에 추가 할 수 있습니다. –