2010-03-12 9 views
0

Je construis un site de commerce électronique. J'ai un modèle de produit et de commande. Il est possible qu'un client commande un produit, puis l'administrateur modifie son prix ou d'autres champs avant que le client ne l'obtienne.Modèles d'objets versions dans Django

Une solution possible consiste à ajouter un champ 'version' au modèle de produit. Lorsque l'administrateur met à jour un champ de produit, j'ajoute un horodatage et crée un nouvel objet au lieu de mettre à jour l'ancien. Une commande contiendra une référence à une version spécifique du produit.

Est-ce que cela a du sens? Est-ce que le remplacement de la méthode Product Save sera suffisant pour le faire fonctionner?

Merci

Répondre

1

je le fais de cette façon:

Faites une copie des colonnes de produits correspondantes dans le tableau de commande.

Lorsque vous ajoutez un produit à la commande, copie tout de produit à la commande (inclure une FK aussi si vous voulez). De cette façon, l'administrateur peut faire ce qu'il veut (changer le nom du produit/prix/catégorie/etc.), Mais le prix du produit/nom/etc. restera toujours le même.

Vous pourriez faire une colonne de version dans le produit comme vous l'avez suggéré, mais c'est beaucoup plus compliqué.

+0

La copie des champs de produit à la commande est une bonne idée. Le seul problème est que différents types de produits ont des champs différents. Peut-être simplement copier tout dans un champ de texte et seulement les champs communs à tous les types de produits pour séparer les champs. Merci – pablo