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}"