Bonjour,
Je suis débutant sur django et bute sur un problème d'héritage entre models que j'aimerais mettre en place.
Voici mes modèles:
Et voici le résultat de ma migration:
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 class Interaction(models.Model): nom = models.CharField(max_length=128, unique=True) lieu = models.ForeignKey(Lieu, on_delete=models.CASCADE, blank=True, null=True) description = models.TextField(default='...') acces_libre = models.BooleanField(default=True) class Heros(Interaction): user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True,null=True) ############# Attributs ########## corps = models.IntegerField(default=0) coeur = models.IntegerField(default=0) esprit = models.IntegerField(default=0) def __str__(self): return self.nom class Personnage(Interaction): # Attributs corps = models.IntegerField(default=50) coeur = models.IntegerField(default=50) esprit = models.IntegerField(default=50) def __str__(self): return self.nom
Il me semble que tout est correct et que le lien par clé étrangère se fait bien... cependant lorsque je souhaite créer une instance de héros sur l'interface admin, j'obtiens:
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 migrations.CreateModel( name='Interaction', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('nom', models.CharField(max_length=128, unique=True)), ('description', models.TextField(default='...')), ('acces_libre', models.BooleanField(default=True)), ], ), migrations.CreateModel( name='Heros', fields=[ ('interaction_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='aventures.Interaction')), ('corps', models.IntegerField(default=0)), ('coeur', models.IntegerField(default=0)), ('esprit', models.IntegerField(default=0)), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], bases=('aventures.interaction',), ), migrations.CreateModel( name='Personnage', fields=[ ('interaction_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='aventures.Interaction')), ('corps', models.IntegerField(default=50)), ('coeur', models.IntegerField(default=50)), ('esprit', models.IntegerField(default=50)), ], bases=('aventures.interaction',), ), migrations.AddField( model_name='interaction', name='lieu', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='aventures.Lieu'), ),
Lorsque je souhaite créer une instance Personnage:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 no such column: aventures_heros.interaction_ptr_id
J'ai vidé mon dossier migration, supprimer toutes les instances d'avant mon changement dans les modèles, rien ne change...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 no such table: aventures_personnage
Auriez-vous une idée?
Merci à vous.
Niko
Partager