IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Attribut dans une relation entre deux entités


Sujet :

Django Python

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Attribut dans une relation entre deux entités
    Salut à tous.
    Je me pose une question pour implémenter une association entre deux entités qui contient des attributs avec django. Je m'explique :

    Si on prend le cas suivant :


    Une commande peut contenir aucun ou plusieurs articles avec la quantité de chaque article.
    Un article peut être contenu dans 0 ou plusieurs commandes avec la quantité de chaque article.

    La relation peut être écrite comme ceci en python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    from django.db import models
     
    class Commande(models.Model):
        Date = models.DateField()
        MontantTotal = models.CharField()
        Articles = ManyToManyField(Article)
     
    class Article(models.Model):
        Designation= models.CharField()
        PrixUnitaire= models.CharField()
    Lorsque django construira la base de donnée, il va créer une table suplémentaire des deux autres (Commande et Artilcle) qui sera Commande_Article. Cette table renseignera seulement les identifiants des articles et des commandes mais ne donnera pas l'information de quantité des articles.
    Savez vous comment faut-il faire pour renseigner l'attribut Quantite dans la base de donnée depuis python?
    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Une solution que j'ai trouvé est de créer manuellement la table de relation dans la base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Contenir(models.Model):
        NCommande = models.ForeignKey(Commande);
        NArticle= models.ForeignKey(Article);
        Quantite= models.IntegerField();
    et de ne plus mettre le champ ManytoManyField()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class Commande(models.Model):
        Date = models.DateField()
        MontantTotal = models.CharField()
        #### Articles = ManyToManyField(Article)  ####
     
    class Article(models.Model):
        Designation= models.CharField()
        PrixUnitaire= models.CharField()
     
    class Contenir(models.Model):
        NCommande = models.ForeignKey(Commande);
        NArticle= models.ForeignKey(Article);
        Quantite= models.IntegerField();
    [/CODE]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MCD] 5 relations entre deux entités : possible ?
    Par feugana1 dans le forum Schéma
    Réponses: 2
    Dernier message: 14/09/2010, 20h35
  2. Réponses: 13
    Dernier message: 22/08/2009, 15h53
  3. Comment établir une relation entre deux tables
    Par Monta^^ dans le forum Hibernate
    Réponses: 15
    Dernier message: 30/04/2009, 19h54
  4. Supprimer et créer une relation entre deux tables
    Par bassiste dans le forum Administration
    Réponses: 1
    Dernier message: 18/07/2008, 20h20
  5. MCD - une relation entre 3 entités
    Par fanette dans le forum Schéma
    Réponses: 6
    Dernier message: 23/11/2006, 20h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo