Résolue

Django

# Bases de données # Django # Migrations

Bonjour,

<u>Le contexte :</u>

J'ai crée un petit programme qui alimente une base PostgreSql (Table Cal_scol ) en utilisant Python. Celle ci comprends les jours de l'année et précise dans les autres champs si c'est un jour férie , un week end , un jour de vacances scolaires).

dans PgAdmin , je vois bien ma table Cal_scol avec les données.


J ai crée une applis Django qui me permettra d'afficher l'ensemble des données de la table ( que je souhaite présenter ultérieurement sous forme de calendrier ).

Cependant , Django ne vois pas les données. Dans Django , quand je souhaite afficher le contenu de la table je n'ai que des cellules vides.


J'ai une autre table crée elle depuis Django et les données saisie depuis Django (Des views type CRUD , saisie suppression , modification) , et la les données s'affichent bien ( table listes des personnels ) et je peux jouer avec ( supprimer, afficher , modifier ).


Pourtant j'ai bien fait dans le terminal "python manage.py makemigrations" et "python manage.py migrate "


<u>Question </u>:


D'apres mes recherches il faudrait que je lance une commande utilisant Runpython afin que les données de Cal_scol crée par python apparaissent dans Django . mais je ne vois pas ce que doit faire exactement ( je sèche depuis 15 jours ). Avez vous une solution ?


Par avance Merci


Thibault houdon

Mentor

Bonjour Eric,


As-tu ton code disponible quelque part par exemple sur un dépôt Github qu'on y jette un oeil ?


RunPython est une classe et un mécanisme utilisé par les migrations mais que tu n'as normalement pas besoin d'utiliser toi-même.


Le schéma de ta base de données Postgresql (cal_scol), il a été créé à partir de l'ORM de Django ou c'est fait totalement séparément ?


Si je comprends bien le problème en fait tu as créé une base de données hors de Django que tu alimentes avec un script séparé de Django lui aussi et là tu aimerais utiliser une applicatoin Django pour lire et utiliser ces données ?


Thibault.

désolé mais a ce jour je n'ai pas de dépôt GitHub;

mais tu as cerner le pb.

via un script python , la table Calensco a été crée et les données insérées

.je veux utiliser cette table dans Django


<u>dans Django , models</u>

class Calensco(models.Model):

  id_cal_sco = models.CharField(max_length=50, blank=True, null=True)

  cs_date = models.CharField(max_length=50, blank=True, null=True)

  cs_jour = models.CharField(max_length=50, blank=True, null=True)

  cs_njour = models.CharField(max_length=50, blank=True, null=True)

  cs_week = models.CharField(max_length=50, blank=True, null=True)

  cs_ferie = models.CharField(max_length=50, blank=True, null=True)

  cs_nferie = models.CharField(max_length=50, blank=True, null=True)

  cs_vac = models.CharField(max_length=50, blank=True, null=True)

  cs_nvac = models.CharField(max_length=50, blank=True, null=True)

  #id = models.BigIntegerField(blank=True, null=True)

  class Meta:

    db_table = 'CalenSco'


<u>dans views</u>

def calscoView(request):  

  if request.method == "POST":  

    form = Cal_ScoForm(request.POST)  

    if form.is_valid():  

      try:  

        form.save()  

        return redirect('/showCS')  

      except:  

        pass  

  else:  

    form = Cal_ScoForm()  

  return render(request,'CS.html',{'form':form}) 


dans forms

from django import forms  

from CRUAPP.models import Calensco  


class Cal_ScoForm(forms.ModelForm):  

  class Meta:  

    model = Calensco  

    fields = "__all__"  


quand je l'execute , les champs sont vide

( si je crée la table directement dans Django , ca fonctionne, j'ai tester, mais comme il y a plus de 300 lignes a saisir , je crée un script externe plutot que de les saisir lignes par lignes et en plus je fais des calculs pour savoir si c'est jour ferier ou pas ).

Le pb viens donc de la migration des données. Pour Django , la table est vide


Cordialement

Hello,


je permets d'essayer de t'aider aussi en plus de l'aide de Thibault.


As tu essayé cette commande python manage.py inspectdb > models.py

ça permet d'être sûr que le modèle django corresponde bien au schéma de ta database avec déjà des entrées. Fais attention de ne pas écraser ton models.py existant vérifie avant avec un autre noms par exemple.


Si tu ne l'as pas déjà regarde sur ce lien, c'est la doc officielle de django qui explique l'intégration d'une database déjà existante.


https://docs.djangoproject.com/fr/4.1/howto/legacy-databases/



bonjour,

Merci de vos reponses. Je prends seulement connaissance de la solution proposée ( j avais des impératifs professionnels a gérer ).

Je connaissais la doc officiel mais je n'avais pas vu ce chapitre.

Je vous tiens au courant pour la suite

Cordialement

Eric


En fait si , je l'avais déjà utiliser ( même que cela donne des champs a longeur négative max_length=-1 , donc j'ai mis max_length=100)

Je vais pas faire perdre du temps a tout le monde ( vu que v'est hors des cours ). Je continuerai a chercher mais je vais d'abord suivre les cours


Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.