creation module : status.py et plus
#1
Wink 
Bonjour,

Meilleurs vœux pour la nouvelle année  Big Grin .

J'ai essayé de créer un autre fichier status.py renommé support.py

Mon souci est que la clé étrangère "support_id" ne se créé pas dans la base beavers_beaver

Une petite aide Rolleyes ?
  Répondre
#2
Bonjour & bonne année !

Vous avez bien :

- créé ajouter un champ "support" dans le modèle voulu ?
- généré le fichier de migration ?
- exécuté la migration ?
  Répondre
#3
(06-01-2021, 11:19)genglert a écrit : Bonjour & bonne année !

Vous avez bien :

- créé ajouter un champ "support" dans le modèle voulu ?
- généré le fichier de migration ?
- exécuté la migration ?

C'est ça le problème. Il me semble avoir effectué toutes les procédures  Blush
  Répondre
#4
Le fichier de migration contient bien le code qui demande l'ajout d'un champ ? votre fichier est bien exécuté lorsque vous lancez "migrate" ?
Regardez-vous bien la bonne base de données (oui ça arrive quand on code d'utiliser une base Sqlite mais de regarder une base MySQL...) ?
Aucun message d'erreur das votre terminal ?
  Répondre
#5
Toujours en recherche de la solution  Sad

J'ai
dans editors/editor.py (beaver)

Code :
class Editor(CremeEntity):
   # Support de l'article
   support = ForeignKey(Support, verbose_name=_('Editorial support'), on_delete=CREME_REPLACE)
   #Titre article
   titre_article = CharField(_('article title'), max_length=200)
# Statut
   status   = ForeignKey(Status, verbose_name=_('Status'), on_delete=CREME_REPLACE)
   #chapeau
   chapeau_article = TextField(_('Article cap'), blank=True ).set_tags(clonable=False, optional=True)
   #contenu de l'article
   contenu_article = TextField(_('Content of the article')) ............
 
dans support.py
Code :
# -*- coding: utf-8 -*-

from django.db.models import CharField, BooleanField
from django.utils.translation import gettext_lazy as _, pgettext_lazy

from creme.creme_core.models import CremeModel


class Support(CremeModel):
   supportname      = CharField(_('Editorial support'), max_length=150, blank=False, null=False, unique=True)
   is_custom = BooleanField(default=True).set_tags(viewable=False)
   #order     = BasicAutoField(_('Order'))

   creation_label = pgettext_lazy('editors-support', 'Create a support')

   def __str__(self):
       return self.supportname

   class Meta:
       app_label = 'editors'
       verbose_name = _(u'Editor support')
       verbose_name_plural = _(u'Editors support')
       ordering = ('supportname',)
       #ordering = ('order',)

La table est bien créée editors_support mais il manque dans editors_editor --> support_id

Message d'erreur

Code :
django.db.utils.OperationalError: (1054, "Unknown column 'editors_editor.support_id' in 'field list'")


Je n'arrive pas à créer la clef étrangère (suis sous mySQL).

Si je regarde status qui est propre dans phpmyadmin j'ai dans editors_editor l'index "editors_editor_status_id_a5690e8b_fk_editors_status_id" pour status

il manque pour support Dodgy 

Comment est généré "a5690e8b" dans les lignes du dessus ?
  Répondre
#6
Bonsoir,

Citation :Comment est généré "a5690e8b" dans les lignes du dessus ?

Ça c'est de la tambouille interne à Django.

---

Comme je vous l'ai déjà conseillé, vous devriez utiliser SQLite pendant la phase de développement initiale, et tester ensuite avec MySQL quand votre code fait ce que vous voulez. Si vos données en base ne sont pas importantes (j'imagine que ce sont des données de tests), partez sur une base propre (en SQLite donc, vous n'avez rien à installer), supprimez vos fichiers de migration python, re-générez les avec "makemigrations", et exécutez les migrations.

Bon courage ; la programmation c'est souvent fouiner, bidouiller, mettre des trucs en commentaires jusqu'à ce que ça arrête de planter, mettre des print() dans le code etc...

Bon week-end !
  Répondre
#7
Bon bah j'ai trouvé. Le problème venait de django.

J'ai utilisé les commandes suiivantes :

Code :
manage.py migrate --fake-initial
manage.py migrate --fake mon_aps zero

et ainsi migrate a fonctionné de nouveau Rolleyes
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)