J'ai une question de conception concernant Django. Je ne suis pas sûr de savoir comment appliquer le principe de couplage lâche des applications à ce problème spécifique:Couplage lâche des applications et héritage du modèle
J'ai une commande-application qui gère les commandes (dans une boutique en ligne). Au sein de cet ordre-app J'ai deux classes:
class Order(models.Model):
# some fields
def order_payment_complete(self):
# do something when payment complete, ie. ship products
pass
class Payment(models.Model):
order = models.ForeignKey(Order)
# some more fields
def save(self):
# determine if payment has been updated to status 'PAID'
if is_paid:
self.order.order_payment_complete()
super(Payment, self).save()
Maintenant, le problème réel: J'ai une application plus spécialisée qui étend sorte de cet ordre. Donc, il ajoute un peu plus de champs à elle, etc. Exemple:
class SpecializedOrder(Order):
# some more fields
def order_payment_complete(self):
# here we do some specific stuff
pass
Maintenant, bien sûr, le comportement prévu serait la suivante: créer un SpecializedOrder, le paiement de cette commande est passée et la méthode order_payment_complete()
du SpecializedOrder est appelé. Toutefois, étant donné que le paiement est lié à Order, not SpecializedOrder, la méthode order_payment_complete()
de l'ordre de base est appelée.
Je ne connais pas vraiment la meilleure façon de mettre en œuvre une telle conception. Peut-être que je suis complètement éteint - mais je voulais construire cette commande-app afin que je puisse l'utiliser à des fins multiples et je voulais le garder aussi générique que possible.
Ce serait génial si quelqu'un pouvait m'aider ici! Merci, Nino
parfait, c'était exactement ce dont j'avais besoin. :) – Nino