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 :

Formulaire pour lien "ForeignKey" / Django


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Par défaut Formulaire pour lien "ForeignKey" / Django
    Bonjour,

    J'ai un modèle de données qui imbrique plusieurs "models.ForeignKey".
    Comment faire un formulaire pour permettre la création/modification d'un élément de type "Trade" ?
    Un Trade contient des phases. Les phases contiennent des conditions et des actions.
    Comment faire un formulaire pour creer/modifier un Trade ?


    Trade
    -- Phase(s)
    ---- PhaseCondition(s)
    ---- PhaseAction(s)




    Mon modèle est le suivant :

    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
     
    class TradeConditionType(models.Model):
        name        = models.CharField(max_length=15) 
        descr       = models.TextField(blank=True)  
     
        def __str__(self):
            return self.name
     
    class TradeActionType(models.Model):
        name        = models.CharField(max_length=15) 
        descr       = models.TextField(blank=True)    
     
        def __str__(self):
            return self.name
     
    class PhaseCondition(models.Model):
     
        number      = models.IntegerField(default=1,blank=True,null=True)
        name        = models.CharField(max_length=15) 
        descr       = models.TextField(blank=True)  
        # restrict    = models.BooleanField(default=False)
        type        = models.ForeignKey(TradeConditionType, on_delete=models.SET_NULL,null=True)      
        param       = models.JSONField(encoder=DjangoJSONEncoder, decoder=None) 
        active      = models.BooleanField(default=True)     
     
        def __str__(self):
            return self.name     
     
    class PhaseAction(models.Model):
        name        = models.CharField(max_length=15) 
        number      = models.IntegerField(default=1,blank=True,null=True)        
        # restrict    = models.BooleanField(default=False)
        type        = models.ForeignKey(TradeActionType, on_delete=models.SET_NULL,null=True)      
        param       = models.JSONField(encoder=DjangoJSONEncoder, decoder=None) 
        active      = models.BooleanField(default=True)     
     
        def __str__(self):
            return self.name
     
    class TradePhase(models.Model):
        number      = models.IntegerField(default=1,blank=True,null=True)
        name        = models.CharField(max_length=15) 
        descr       = models.TextField(blank=True)    
        active      = models.BooleanField(default=True)   
        conditions  = models.ForeignKey(PhaseCondition, on_delete=models.CASCADE,null=True) 
        actions     = models.ForeignKey(PhaseAction, on_delete=models.CASCADE,null=True)
        def __str__(self):
            return self.name  
     
    class Trade(models.Model):
     
        pairfrom    = models.CharField(max_length=15)
        name        = models.CharField(max_length=15)    
        descr       = models.TextField(blank=True)
        assetAgainst    = models.CharField(max_length=15)
        quantiteAgainst = models.FloatField()
        dateStart   = models.DateField(null=True)
        dateEnd     = models.DateField(null=True)
        account     = models.ForeignKey(ExchangeAccount, on_delete=models.SET_NULL,null=True)
        active      = models.BooleanField(default=True)  
        isModel     = models.BooleanField(default=False)      
        phases        = models.ForeignKey(TradePhase, on_delete=models.CASCADE) 
     
     
        def __str__(self):
            return f"{self.pairfrom} - {self.name}"

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 064
    Par défaut
    Bonjour,

    Seul vous, êtes capable de savoir à quoi devrait ressembler votre formulaire... On ne va pas jouer aux devinettes, mais vous avez des supports pour vous aider et on ne pourra pas en dire plus que ce qui existe déjà.

    Vous construisez donc votre formulaire, puis une fois terminé, il faudra traiter les données envoyées dans une vue.

    Le reste est juste une spécification liée à ce qu'on appelle communément "le métier" et où il faut un minimum connaître les besoins pour y afficher les diverses widgets de votre formulaire (CharField, BooleanField, ...).

Discussions similaires

  1. [MySQL] formulaire et double quotes
    Par matio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2007, 17h34

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