ОК, для этого я сделал следующее:
from product.models import Discount
class AutoDiscount(Discount):
pass
Это позволяет мне определить различные скидки в административной области, а затем сделать это:
def check_automatic_discounts(sender, form=None, **kwargs):
"""
"""
if sender in (CreditPayShipForm, SimplePayShipForm,
PaymentContactInfoForm):
# I probably need to sort these in some specific order
for discount in AutoDiscount.objects.all():
if discount.isValid(cart=form.cart,)[0]:
form.order.discount_code = discount.code
form.order.save()
return
signals.form_postsave.connect(check_automatic_discounts)
IМожно добавить поля в модель AutoDiscount
и переопределить метод isValid
, если мне нужен более подробный контроль над тем, какие скидки применяются