2010-05-26 6 views
1

Bon après-midi! Il y a trois essences. Produit, Option et ProductOption. Le produit a beaucoup à plusieurs à l'option via ProductOption. Demander comment créer s'il vous plaît pour le produit 'la forme d'addition/édition avec ces options (pas sur la page d'administration)?Django, comment créer un formulaire pour ajouter/éditer un objet avec des liens m2m?

Si simplement pour produire {{product.options}} - sera SelectBox avec un choix pluriel. Et il me faut qu'il y ait eu des formes. Chaque option a une description et la carte. Qu'il était possible de les entrer.

Apparence à moi, je représente en tant que:

La boxe chèque avec le nom de l'option dans une étiquette, plus bas la description de l'option. Et ainsi les lignes 10.

Ayant lu des matériaux sur Internet a compris que dans ce cas il est nécessaire d'utiliser des formsets. Mais voici un autre problème:

Au moment de l'édition du produit, il est nécessaire de montrer toutes les options possibles, et pas seulement celles qui l'ont déjà été. C'est à dire. enregistré (et rempli) plus encore pas ancré à ce modèle. Demander où creuser s'il vous plaît.

Merci.

+1

Il serait beaucoup plus facile de comprendre la question si vous postez les parties pertinentes de votre fichier 'models.py'. – blokeley

+0

Merci beaucoup – moskrc

Répondre

0

Ceci est mon fichier models.py.

class Section(models.Model): 
    title = models.CharField(max_length=250) 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     pass 


class Option(models.Model): 
    title = models.CharField(blank=True, null=True, max_length=250) 
    section = models.ManyToManyField(Section) 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     pass 


class Card(models.Model): 
    title = models.CharField(max_length=250) 
    section = models.ForeignKey(Section) 
    options = models.ManyToManyField(Option, through='CardOption') 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     pass 


class CardOption(models.Model): 
    card = models.ForeignKey(Card) 
    option = models.ForeignKey(Option) 
    description = models.TextField(blank=True, null=True, max_length = 300) 

    class Meta: 
     pass 
Questions connexes