2009-11-03 29 views
2

Je veux créer un formulaire de commande pour acheter plusieurs choses dans ce genre de structure:personnalisée Satchmo Configuration sauvegarde/

Business Data 1 
---Product A 
---Product B 
Business Data 2 
---Product A 

qui est, je veux vendre des produits A, B, mais avant cela se fait J'ai besoin de données agrégées supplémentaires dans l'objet 'Données métier'. C'est:

Business 1: Joe's Plumbing, located at ... ... ... 
---Product A, standard ad appearing in category 3, with text "awesome plumbing" 
---Product B, cooler ad appearing in category 9, with text "cheap plumbing" 
Business 2: Joe's Burgers, located at ... ... ... 
---Product A, standard ad appearing in category 4, with text "zzz" 

ou, à partir d'un niveau de modèle, plus comme:

class Business(models.Model): 
    name = models.CharField(max_length=255) 
    address = models.MagicAddressField() 

class Ad(models.Model): 
    category = models.ForeignKey(Category) 
    text = models.CharField(max_length=255) 
    business = models.ForeignKey(Business) 

Maintenant, au lieu de réimplémenter un backend panier entier, je suis sûr que je veux utiliser Satchmo. Cependant, j'ai de la difficulté à envelopper ce genre de choses. Satchmo semble avoir plusieurs options pour les produits, mais elles sont toutes "plates". Bien que je puisse facilement obtenir que Satchmo permette à l'utilisateur final d'acheter le produit A et le produit B, la db ne montre aucune connexion à Business 1, et des choses comme le nom de l'entreprise devraient être répétées dans les produits A et B.

Je pense que je peux probablement contourner cela avec mes propres vues/modèles, si seulement je peux obtenir la dernière "instance de produit" que satchmo vend pendant une commande pour avoir une clé étrangère à la table Business que je vais créer . En d'autres termes, je veux faire le modèle d'annonce un Satchmo custom product model - Je pense ...

Mais si je change juste à l'annonce:

class Ad(Product): 
    objects = ProductManager() 

    category = models.ForeignKey(Category) 
    text = models.CharField(max_length=255) 
    business = models.ForeignKey(Business) 

est-ce pas la mauvaise sémantique? Cela ne signifie-t-il pas que «ce type de produit est associé à l'activité x», et non «lorsque vous l'achetez, l'instance du produit pointe vers l'activité x»?

Je suis assez confus ici: -/

Répondre

0

Si je comprends bien ce droit, je ferais quelque chose comme ça.

Faire une relation ManyToMany entre les entreprises et les produits:

class Business(models.Model): 
    name = models.CharField(max_length=255) 
    address = models.MagicAddressField() 
    products = models.ManyToManyField(Product) 

Ensuite, sur votre-formulaire personnalisé et modèle/vue, vous pouvez ajouter pour chaque entreprise un fieldset avec les produits/Annonces pour chaque entreprise. La seule complication que je vois maintenant, c'est qu'après avoir rempli le formulaire et l'avoir envoyé, vous auriez aussi besoin d'un "processus de paiement" personnalisé pour enregistrer les informations sur le produit acheté par quelle entreprise ... peut-être que cela pourrait être fait à travers des options de produits (?) mais de toute façon cela signifiera probablement beaucoup de personnalisation/travail avec des signaux ;-) Mais je pense que c'est la bonne direction.