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 :

relation de table oracle sous django


Sujet :

Django Python

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut relation de table oracle sous django
    bonjour,

    je debute avec la framework django et en python , mon projet est composé de 5 tables créer sur un schéma oracle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    class ESPECE (models.Model):
        ID = models.AutoField(null=False,blank=True,primary_key=True)
        TYPO = models.CharField (max_length=25, blank=False)
        HABITAT = models.CharField (max_length=35, blank=False)
        NOM_CITE = models.CharField (max_length=255,null=True, blank=True)
        LB_NOM = models.CharField(max_length=255,null=True, blank=True)
        TYPE = models.CharField(max_length=255,null=True, blank=True)
        CD_NOM = models.CharField(max_length=255)
        NOM_COMPLET =  models.CharField(max_length=255,null=True, blank=True)
     
        def __unicode__(self):
            return self.LB_NOM
     
        class Meta :
            db_table = 'ESPECE'
     
    class TYPO_BARCELONE (models.Model):
        ID = models.AutoField(null=False, blank=True,primary_key=True)
        CLE_TRI = models.IntegerField(null=True, blank=True)
        CD_HAB = models.CharField (max_length=25,primary_key=True)
        CD_HAB_SUP = models.CharField (max_length=25)
        LB_HABDH_UK = models.CharField (max_length=255)
        NIVEAU = models.IntegerField (null=True, blank=True)
        LB_DESCRI = models.CharField (max_length=255,blank=True)
     
        def __unicode__(self):
            return self.CD_HAB
     
        class Meta :
            db_table = 'TYPO_BARCELONE'
     
     
     
    class TYPO_CH (models.Model):
        ID = models.AutoField(null=False, blank=True,primary_key=True)
        CD_HAB = models.CharField (max_length=25,primary_key=True)
        CD_HAB_SUP = models.CharField (max_length=25)
        NIVEAU = models.IntegerField (null=True, blank=True)
        LB_NIVEAU = models.CharField (max_length=50)
        FRANCE = models.CharField (max_length=6,blank=True)
        LB_DESCRI = models.CharField (max_length=255,blank=True)
        LB_CH_EN = models.CharField (max_length=255,blank=True)
        LB_TOME_CH = models.CharField (max_length=10,blank=True)
        CRSP_CB_SELON_CH_PUBLIES = models.CharField (max_length=100,blank=True)
        CORR_CB = models.CharField (max_length=10,blank=True)
        CLE_TRI = models.IntegerField(null=True, blank=True)
        CRSP_CB_SELON_CH = models.CharField (max_length=100,blank=True)
        REMARQUES_CORR_CB = models.CharField (max_length=255,blank=True)
     
        def __unicode__(self):
            return self.CD_HAB
     
        class Meta :
            db_table = 'TYPO_CH'
     
     
    class TYPO_EUNIS_2008 (models.Model):
        ID = models.AutoField(null=False, blank=True,primary_key=True)
        CD_HAB = models.CharField (max_length=25)
        CD_HAB_SUP = models.CharField (max_length=25)
        NIVEAU = models.IntegerField (null=True, blank=True)
        LB_NIVEAU = models.CharField (max_length=50)
        FRANCE = models.CharField (max_length=6)
        LB_EUNIS_FR = models.CharField (max_length=255,blank=True)
        LB_DESCRI = models.CharField (max_length=1000,blank=True)
        LB_DESCRI_EN = models.CharField (max_length=1000,blank=True)
        NOTE = models.CharField (max_length=1000,blank=True)
        REFCD = models.CharField (max_length = 10,blank=True)
     
        def __unicode__(self):
            return self.CD_HAB
     
        class Meta :
            db_table = 'TYPO_EUNIS_2008'
     
     
    class TYPO_ZNIEFF_Dauvin_94 (models.Model):
        ID = models.AutoField(null=False, blank=True,primary_key=True)
        CD_HAB = models.CharField (max_length=25)
        CD_HAB_SUP = models.CharField (max_length=25)
        NIVEAU = models.IntegerField (null=True, blank=True)
        LB_DESCRI = models.CharField (max_length=255)
        commentaire_milieu = models.CharField (max_length=1000,blank=True)
        commentaire_biogeographie = models.CharField (max_length=1000,blank=True)
        rq_biocenoses = models.CharField (max_length=1000,blank=True)
     
        def __unicode__(self):
            return self.CD_HAB
     
        class Meta :
            db_table = 'TYPO_ZNIEFF_Dauvin_94'
     
     
     
    class TYPO_BBMEDFR (models.Model):
        ID = models.AutoField(null=False, blank=True,primary_key=True)
        CD_HAB = models.CharField (max_length=25)
        CD_HAB_SUP = models.CharField (max_length=25)
        NIVEAU = models.IntegerField (null=True, blank=True)
        LB_NIVEAU = models.CharField (max_length=25)
        LB_DESCRI = models.CharField (max_length=255,blank=True)
        FRANCE = models.CharField (max_length=6,blank=True)
        LB_BBMEDFR_EN = models.CharField (max_length=1000,blank=True)
        CLE_TRI = models.IntegerField(null=True, blank=True)
     
        def __unicode__(self):
            return self.CD_HAB
     
        class Meta :
            db_table = 'TYPO_BBMEDFR'

    chaque table typo a une relation de 1>>cd_hab (typo) à n>> habitats (espece) avec la table espece
    Si j'ai bien compris il faudrait que je crée sur espece un champs avec un type models.ForeignKey et un autre models.ManyToManyField mais sur tout les exemples que je vois on indique la table entre parenthése hors cette table est en relation avec les quatres table typo....
    bref je suis un peu perdu...

    merci de m'éclairer

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2008
    Messages : 21
    Par défaut
    essaye de formuler ça sans langage informatique au départ...

    d'après ce que je comprends , chaque espece doit/peut avoir une relation avec les différentes typologies, c'est ça ?

    dans ce cas, tu pars de ta table especes et tu ajoute des relations vers les typos :

    typo_barcelone = ForeignKey(Typo_Barcelone)
    typo_ch = ForeignKey(Typo_CH)

    etc
    essaie de respecter les conventions python : les noms des classes (models) avec majuscule, CamelCase, les noms des fields en minuscules
    ça va mieux pour les autres lecteurs de ton code

    si les typo sont optionnelles, tu mets :

    typo_barcelone = ForeignKey(Typo_Barcelone, null=True, blank=True)

    cela répond-il à ta question ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d'après ce que je comprends , chaque espece doit/peut avoir une relation avec les différentes typologies, c'est ça ?
    oui
    Dans ma table espece mon champs habitats regroupe tout les code (cd_hab) de toutes les typo..

    en parcourant les differents tuto sur django j'avait en effet pensez que la solution que tu m'indiques était la bonne mais sans trop y croire. je ne voispas trop l'intérêt d'ajouter une colonne par relation, d'autant que d'autre vont suivre et je serai sans arrêt en train de refaire cette table (especes)??

    c'est réellement la seule solution

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    Regarde du coté des 'generic relations'.

    L'exemple donné est celui d'un tag, qui peut être rattaché à n'importe qu'elle objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from django.db import models
    from django.contrib.contenttypes.models import ContentType
    from django.contrib.contenttypes import generic
     
    class TaggedItem(models.Model):
        tag = models.SlugField()
        content_type = models.ForeignKey(ContentType)
        object_id = models.PositiveIntegerField()
        content_object = generic.GenericForeignKey('content_type', 'object_id')
     
        def __unicode__(self):
            return self.tag

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Par défaut
    salut

    merci de ta réponse
    le site est en anglais alors je ne suis pas sur d'avoir compris


    donc je dois créer une clé étrangère sur chacun de mes models
    et un champ tags = generic.GenericRelation(TaggedItem) ?

    et par la suite comment réaliser la relation entre deux tables
    si je veux obtenir les informations dans un formulaire?

    merci de ton aide

Discussions similaires

  1. [9i] Voir une Table Oracle sous Delphi
    Par stfanny31 dans le forum Débuter
    Réponses: 2
    Dernier message: 26/03/2013, 23h58
  2. Ajout d'une champ dans une table Oracle sous Toad ?
    Par christ571 dans le forum SQL
    Réponses: 5
    Dernier message: 20/07/2011, 15h23
  3. Réponses: 8
    Dernier message: 29/03/2010, 11h07
  4. Réponses: 2
    Dernier message: 27/06/2007, 10h22
  5. transferer des tables oracle sous access
    Par lassmust dans le forum Oracle
    Réponses: 3
    Dernier message: 28/12/2005, 13h38

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