Session du 08 juin 2023 à 20h00
Développement Web & Frameworks
Frontend & UI
Librairie Standard & Modules
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Booster l’admin Django avec filtres et export
On va s'amuser avec l'interface Admin de Django
-
Afficher les objets Django (même avec Foreign key) dans un tableau editable
-
La librairie django-import-export pour ... importer et exporter ses objets =D
-
Filtre DateFiled custom
00:00:00 :Hello.Hello.Et puis je vais commencer.Salut tout le monde.Salut tout le monde.J'étais sur le mauvais lien en fait.Désolé, je ne sais pas, j'ai eu un petit problème.
00:00:30 :Je vais organiser un peu la fenêtre pour que ce ne soit trop le bazar.Et puis je vous montre le programme.Ok c'est bon, est-ce que vous voyez l'écran?
00:01:02 :Alors du coup pour le programme, je l'avais un peu mis déjà sur le truc du mentorat.Je ne sais pas si c'est bien défini pour vous, vous voyez assez bien.
00:01:21 :Je vais zoomer comme ça.Du coup ce qu'on va faire comme d'habitude, en fait j'essaie de mixer un petit peu.Attendez, je vais virer ma caméra.
00:01:34 :Oulà, Moïse est chaud en chiales vaches maintenant.Ok, donc en gros, il y a plusieurs niveaux dans l'assemblée,donc on va essayer de voir un peu tout.
00:01:54 :A chaque fois que je monte des choses sur Django, j'essaie de démarrer sur un projet tout neuf.Comme ça, ça peut plaire à tout le monde.
00:02:03 :Donc en gros, on va mettre en place un projet Django.On va dire qu'en fait on veut se faire un site web qui permet de gérer un bureau.
00:02:12 :Donc on va dire qu'on va créer un projet Django The Office.On va créer une application dedans qui s'appelle Bureau,et ça va nous permettre de gérer les employés du bureau.
00:02:21 :Donc on va créer des modèles, on va créer des employés, profession, un parrain et un contrat.Et en fait, profession, parrain, contrat seront des foreign key, des clés étrangères d'employés.
00:02:35 :Donc tout ça, c'est juste pour servir notre propos de ce soir,où on va juste mettre en place le projet, et après je vais vous montrer,je vais introduire, si vous ne connaissez pas déjà, les filtres qu'on peut faire dans l'interface admin.
00:02:50 :En fait, il y a un truc très puissant avec Django.Quand vous faites du Django et que vous créez une application,de base, votre projet vient avec une interface d'administration,et cette interface-là, elle est hyper puissante et vous pouvez faire plein de choses avec.
00:03:04 :En fait, avant de...Moi, j'avais souvent l'habitude, quand je commençais un projet,et que je voulais exploiter mes objets, etc., je partais direct sur une API.
00:03:16 :Ou en gros, je disais, je faisais mon projet Django et direct, je développais mon API un peu comme un bourrin,et je pouvais faire des extractions d'objets en CSV, etc.
00:03:27 :Mais ça, c'est utile si, par exemple, vous faites votre application Djangoet vous avez une autre application front-end ou une autre application qui doit interagir avec votre application.
00:03:36 :Là, vous êtes obligés de faire une API, parce que l'interface admin, elle est accessible que via le web.C'est une interface web en HTTP. Ce n'est pas une API.
00:03:46 :Vous ne pouvez pas faire en dehors de l'interface web.Excusez-moi, j'ai un message.Pardon. Voilà.Donc, vous ne jouez pas sur le développement d'API si vous savez que vous...
00:04:25 :Par exemple, si vous dites, je voudrais faire des exports de mes modèles, je veux filtrer, etc.L'interface admin, vous pouvez le faire très bien.Ensuite, je vous montrerai...
00:04:33 :Donc, comme on va faire les filtres, je vous montrerai que les filtres sur les dates,sur tous les champs date-field, c'est un petit peu léger,mais c'est ce que propose de base l'interface admin.
00:04:45 :Je vous montrerai ce qu'on peut mettre en place,notamment avec Django Admin List Filter,ce qui est en fait une bibliothèque qu'on peut installer.Ça va nous permettre de faire des filtres un peu plus évolués sur les dates.
00:04:58 :Parce que là, vous verrez.Ensuite, je vais vous présenter une librairie, toujours pour l'interface admin,qui s'appelle Import-Export.Comme dans le planning du mentorat, ça sert à importer ou à exporter.
00:05:12 :Et en fait, pour être honnête, c'est un truc que j'ai découvert il n'y a pas si longtemps que ça.C'est vraiment extrêmement puissant, parce que vous pouvez exporter vos objetsaprès avoir appliqué vos filtres, etc.
00:05:33 :Ah merde, tu es malade? Bon, bon courage!De toute façon, on est un peu tous malades, je pense,parce qu'on fait du piton là, le jeudi soir à 20h,donc je pense qu'on est un peu tous malades aussi.
00:05:51 :Oui, c'est une blague, c'est un bon jeu de mots, prompt rétablissement.Je pense que non, mais ça pourrait.Ok, je suis perdu avec mes blagues de merde.
00:06:06 :Donc en gros, vous pouvez exporter vos objets en mode table,et ce qui est très beau aussi, c'est que vous pouvez importer.Parce que des fois, quand on crée une application Django,et qu'on crée un par un nos modèles, ça peut devenir hyper chiant.
00:06:23 :Et là, vous pouvez vous dire, je vais pouvoir importer tous mes objets d'un coup,via un fichier Excel, par exemple, je renseigne tout ce que je veux via mon fichier Excel.
00:06:31 :Donc ça, c'est hyper intéressant, c'est la librairie Import-Export qui permet de faire ça.Et après, si on a encore un peu de temps, je vous montrerai comment on fait pour créerune action custom dans l'interface admin.
00:06:42 :Je vous montrerai à la base ce qu'on a de base, et ce qu'on peut faire si on a le temps.Ok, alors, on va créer un nouveau projet.
00:06:54 :On va l'appeler, comme j'ai dit, The Office.Virtual Env, ok, tout ça c'est bon.Ok, nouvelle window.The Office, machin.Je vais zoomer.Je commence par installer Django, vous avez vu, avec PyCharm,il m'a créé automatiquement un environnement virtuel, parce que c'est ce qui est recommandé.
00:07:29 :Donc on va d'abord installer Django.Au moment, s'il vous plaît, posez des questions si vous en avez,parce qu'il y en a qui connaissent Django, il y en a qui ne connaissent pas du tout.
00:07:40 :Donc, n'hésitez pas à poser des questions, et ne soyez pas intimidés,parce qu'il y en a qui connaissent, et puis, il n'y a aucun souci.
00:07:48 :Alors, ouais, je vois une question.Gabriel, ouais.Alors, Django, je commence par l'habitude, mais aujourd'hui,il y a Thierry qui m'a fait une remarque.En gros, c'est une vue de panier, par exemple, où l'utilisateur, il ajoute des articles.
00:08:09 :Et pour supprimer l'article du panier, par exemple, je passais par une méthode get.Et dit que ça, ça se fait pas, en gros.Ouais, parce que c'est pas… tu sais, t'as le fameux CRUD,qui définit toutes les actions que tu peux faire.
00:08:26 :Donc t'as create, retrieve, put, etc.Ouais, update, etc.Donc si tu veux effacer un élément, il y a un delete, je crois, ou un remove.
00:08:39 :Ouais, c'est vrai que je passe beaucoup par des fonctions.Dans le cas spécifique, dans mon panier, je passais par une fonction,parce que je faisais plein de choses, en premier, customisées.
00:08:48 :Mais du coup, je passais par une méthode post plutôt.Pour supprimer un objet?Ouais, de ton panier, soit disant, qu'en fait, vu que ça va modifier…Là, tu ne fais pas que la base de données, tu vas modifier des éléments dans la base de données.
00:09:03 :Du coup, quand tu fais ça, il faut toujours avoir une méthode post, si j'ai bien compris.Ok, pour s'en convaincre, tu peux, avec Postman, par exemple,tu sais, quand tu fais…Sinon, comment on pourrait voir?
00:09:15 :Il faudrait que, à la fin, si on a le temps, j'essaierai de montrer avec une API que j'ai en cours, là, qui est dispo.Ça devrait…Tu sais, parce qu'en fait, quand tu fais des actions, tu as l'URL qui s'affiche,et tu vois si c'est des méthodes guest ou post, avec Postman, des choses comme ça.
00:09:35 :Donc on pourrait tester, mais…De toute façon, si Thierry le dit, c'est que c'est vrai.Oui, oui, c'est sûr.Il développe bien dans les…Il respecte bien…Je ne dis pas qu'on ne respecte pas, nous, mais…J'essaie de voir, tu sais, parce que quand tu fais un delete dans…
00:10:02 :On essaiera de voir si on a accès au type de méthode qu'on fait un delete directement dans l'interface admin.Ok.Mais, ok, en tout cas, c'est une bonne remarque, une bonne intervention, peut-être l'objet d'un nouvel article.
00:10:16 :Peut-être.Ok, donc là, on va créer notre projet.C'était tout pour toi?Oui, oui, oui, je te remercie.Avec plaisir.Du coup, là, on crée notre projet.
00:10:35 :Donc là, on devrait voir apparaître dans The Office, Bureau, avec le truc classique où on a notre setting, etc.Et là, je vais créer directement mon application.
00:10:45 :Mon application, je vais l'appeler EmployeeApp.LS, il faut que je me dirige vers Bureau.J'aurais peut-être pas dû mettre le majuscule, mais bon, c'est pas grave.
00:10:58 :Ok, j'ai créé mon application Employee, et maintenant je vais pouvoir aller créer mes modèles dedans.Donc en fait, les modèles, pour ceux qui ne connaissent pas bien Django encore,vous pouvez voir ça comme vraiment la structure qu'aura la table dans votre base de données.
00:11:34 :Ouais, Céline, en fait, c'est exactement ce qu'on fait là quand on fait les modèles.On crée en fait les tables de la base de données.
00:11:42 :Tu vois, si par exemple ici, je définis une classe qui s'appelle Employee.Donc on la fait, voilà, j'ai mon…Bon, je ne sais pas si vous connaissez cette extension, elle s'appelle Codium.
00:11:55 :C'est une IA qui peut générer un peu du code.Donc ici, ce que j'ai fait, c'est que j'ai créé une classe Employeequi va être en fait la forme, la tronche que va avoir la table dans ma base de données.
00:12:09 :Ok, donc là, je dis que l'employé va avoir un nom, un âge et un salaire.Pour ça, tu vois, par exemple, je ne veux pas le mettre, c'est lui qui me l'a proposé.
00:12:18 :Donc moi, ce que je voulais faire, ce que j'avais dit, c'est que je voulais aussiqu'il ait une profession, il ait un contrat, etc.Et ce que je vais faire, c'est que je vais créer des clés étrangères.
00:12:30 :Je vais les créer comme ça, vous verrez après comment c'est dans l'interface admin.Donc, qu'est-ce qu'on avait dit? Je récupère ce qu'on avait dit tout à l'heure.
00:12:39 :On avait dit employé, profession, parrain et contrat.Ok, donc on va dire, je vais l'écrire en français, salaire, on va mettre un flot.Nom et nom.
00:13:05 :Ok, on a dit quoi? Qu'est-ce qu'on va dire?On va dire date de naissance parce que je vous ai dit qu'on allait faire un test avec ça.
00:13:16 :Date field, ok.Salaire, date d'embauche, bah ouais, pourquoi pas.Donc là, on va mettre la profession et en fait, la profession, on va la mettre en forainky.
00:13:32 :Donc là, vous voyez ici, je vais créer une autre classe, ça va nous permettre de choisir la profession.Non, je ne fais pas de, je ne fais pas d'UML, il y en a sûrement qui le font,mais après c'est sûr que si tu vas commencer à avoir une application hyper complexe, etc.
00:13:53 :Je te conseille d'en faire limite, pas obligé de faire de l'UML, tu peux, mais tu peux juste,tu te fais un diagramme, etc. comme ça tu sais un peu les liens que tu as entre tes bases de données.
00:14:03 :Mais bon, moi, perso, je n'en fais pas.Donc là, on va définir la profession, pareil, modèle, et donc là, on va dire,nom, profession, c'est un char field, et puis on va juste le mettre comme ça.
00:14:22 :Et du coup, on va dire ici que c'est une forainky de profession, ondelay de cascade, ça, n'oubliez pas,c'est important parce que si vous supprimez une profession, il faut que les liens se font.
00:14:38 :Donc en fait, automatiquement, Django, il va effacer automatiquement toutes les entrées qui sont liées,parce que sinon, après c'est le bordel, vous avez des clés liées qui n'existent plus dans la table, etc.
00:14:51 :C'est un peu le bordel, et on va dire qu'on peut ne pas renseigner de profession.Sinon, on va vous emmerder, on va créer, ok, donc là on est bien, qu'est-ce qu'on avait dit d'autre?
00:15:10 :On va mettre différents types de contrats aussi, class, contrat, models, et puis là on va dire contrat type,voilà, et donc là je le rajoute.
00:15:35 :Qu'est-ce qu'on avait dit d'autre? C'est bon, ah ouais, je vais voir, j'ai jamais testé.Non, j'en fie, Django, il fait automatiquement, moi je le mets pas parce que comme ça,Django il crée automatiquement un ID quand tu le mets pas.
00:15:55 :En fait c'est un peu comme si tu lui mettais ID et tu disais, tu vois ici ID, models, ça je le fais pas,mais en gros il le fait automatiquement.
00:16:10 :Tu vois, primary key, true, voilà, automatiquement.Et qu'est-ce que je peux ajouter? Ouais, ce que je fais aussi des fois, c'est que je dis class, meta,
00:16:21 :et c'est pour l'unique, excusez-moi, je sais plus exactement comment on fait pour rendre unique.C'est unique together.En fait ce que je veux pas, c'est que dans la base de données, on puisse rentrer des mêmes noms,même prénoms, par exemple si j'ai Jocelyne Tabo, je veux pas rentrer deux fois Jocelyne Tabo,
00:17:08 :je veux pas que ce soit une erreur par exemple.Donc le fait de dire unique together nom prénom, ça veut dire que le couple nom prénom qui sont ici,il doit être unique ce couple.
00:17:18 :Ok, donc là on a notre base de données, je pense qu'on commence à être pas mal.Dans le settings maintenant, une fois que vous avez mis ça, il faut absolument ajouter votre applicationet dans vos settings, ok, employer app, en fait des gens qui ont le même nom et prénom,
00:17:47 :si ça peut arriver, c'est pour ça d'ailleurs qu'en France on a un troisième et un quatrième prénom,mais si tu veux j'aurais pu mettre ici deuxième prénom, deuxième prénom, machin, pour rendre unique vraiment,pour être sûr que tout soit unique, mais bon là c'est pour l'exemple.
00:18:05 :L'adresse, oui, on peut ajouter plein de choses, adresse mail, numéro de sécu, etc.Mais là pour l'exemple je fais juste un truc simple, l'idée c'est pas de vous faire un super truc,on pourrait même mettre un numéro de matricule, ce qu'on fait souvent quand on crée une applicationcomme ça avec des employés, on met un numéro de matricule qu'on peut soit générer aléatoirement,
00:18:31 :mais pour identifier un employé ce qu'on fait normalement c'est un numéro de matricule.Voilà donc on est là, on a dans le settings, on a rajouté notre application, donc je pense qu'on est pas mal,on va faire l'émigration maintenant.
00:19:09 :Ok, et maintenant, qu'est-ce qu'on va faire? On va créer le super utilisateur pour l'interface admin,parce qu'en fait déjà maintenant si je fais python manage run server, normalement ça marche déjà,vous voyez j'ai bien mon application qui tourne, on est content, mais bon elle fait pas grand chose,pour l'instant on a rien fichu dedans. Donc je vais l'arrêter, le serveur,
00:19:40 :et là je vais créer mon super utilisateur, donc python manage create super user,là je vais mettre quoi? Je mets souvent admin, je mets pas d'email adresse, on pourra le rentrer après,
00:19:55 :et là je mets un mot de passe bidon pour l'exemple, il est pas content, mais il se fout.Voilà, donc si je vais dans mon interface administrateur, j'y vais, ok, admin, pass, ok,donc là vous voyez, super, j'ai rien, c'est parce que j'ai pas enregistré dans mon interface admin,
00:20:19 :j'ai pas enregistré mes modèles, et il faut le faire. Donc on va dire from models import employé,on va importer contrat, profession, et, bon, qu'est-ce qu'ils me disent?
00:20:34 :Salaire, ça n'existe pas, je vais faire un open, donc là vous voyez, j'ai profession, contrat,employé, j'ai rien d'autre, donc, employé, contrat, c'est bon, donc là j'ai tout,et après admin.site, je vais zoomer un peu, admin.site.register, et là il faut mettre un couple,
00:21:07 :employé, contrat, profession, etc. Donc là normalement, si je retourne dans mon interface admin,je refresh, donc là j'ai bien, méta, c'était quoi la question?Jean-Phil qui pose, c'est toi qui posait la question méta? C'est ce truc là, la méta que tu poses?
00:21:31 :Oui, parce que c'est une classe, donc je me demandais si tu la mettais ou pas aussi, dans les imports.Ah non, non, non, ça c'est vraiment une classe pour décrire la classe employée, elle sert pas, tu vois,je lui ai pas donné de nom, en fait ça méta, c'est une classe, si t'as plusieurs modèles, tu vois,
00:21:51 :par exemple ici, j'aurais pu aussi écrire classe méta, ça c'est vraiment un truc qui reste à l'intérieurde la classe, c'est un mot générique pour décrire ta classe, c'est pas une classe que tu mets,qui existe en fait, c'est vraiment un truc. C'est un mot réservé méta?
00:22:07 :Ouais, c'est un nom réservé, si tu mets pas méta, ce qu'il mettra là, il le prendra pas.Ok, merci. Je t'en prie. J'ai vu que tu avais déclaré tous tes modèles dans le même fichier.
00:22:19 :En fait, j'ai déclaré tous mes modèles, ce qui correspond à l'application employée app dans le même fichier,oui. Pour moi ça a du sens parce que profession, contrat, employé sont des classes qui ont quelque chose
00:22:36 :à voir avec l'application employée, mais si j'avais une autre application, j'aurais un autre fichier modèle.Mais par contre, y'a pas de soucis à avoir plusieurs classes définies, plusieurs tables définies dans le même modèle.
00:22:51 :Donc là, j'ai ajouté mes différentes classes, maintenant on les retrouve ici.Et donc vous voyez maintenant, quand je fais profession, c'est surtout employé qui nous intéresse en fait.
00:23:05 :Si je fais ajouter un employé, je définis un nouvel employé, qui s'appelle Jean-Jean.Salaire, je peux lui dire 2100. Date de naissance, vous voyez que Django Admin me met à disposition un petit date speaker ici sympa.
00:23:25 :Donc on peut dire, en fait il faudrait définir à partir de quand, pour la date de naissance, on voudrait le commencer je sais pas,à 1980 ou j'en sais rien, faudrait le setup, mais bon là je dis qu'il est né en 2022 et date d'embauche on dit aujourd'hui.
00:23:53 :Là vous voyez profession, j'ai dit c'est une clé étrangère qui appartient à la table profession que j'ai définie plus haut.Et en fait ça dans l'interface admin ça se traduit comme ça. Ici je crée une profession et que je dis comptable.
00:24:07 :Maintenant quand je vais dans employé, si je redéfinis, j'ai pas de sauvegardé du coup il ne l'a pas gardé.Salaire, 1200, tout démonstre, on s'en fiche. Et là vous voyez maintenant profession, c'est un peu dégueu parce que j'ai pas défini la manière
00:24:26 :dont il devait s'afficher. Ce qu'il faut faire ici, vous définissez une fonction str qui dit en gros c'est une fonction, pareil c'est un nomréservé, une fonction spéciale, une méthode spéciale qui permet de définir comment Django doit afficher l'objet dans la base de données.
00:24:42 :Donc là j'ai fait ça et si maintenant je refresh, il faut que je recrée ce fameux Jean-Jean.1300, tout dé, tout dé. Et donc là vous voyez maintenant il m'affiche toutes les entrées qu'il va y avoir dans la table profession.
00:25:08 :On va juste l'afficher par le nom. Si par exemple ici je définissais une autre fonction, DRH save, et maintenant je vais voir employer,si je vais dans Jean, et bien si je veux ici je peux changer, je peux mettre DRH. Vous voyez en fait toutes les entrées qu'il y a dans ma table profession
00:25:41 :parfois on fait des, vous savez on fait des choice field dans le char pour pouvoir sélectionner, pour pouvoir, parce qu'ici par exemple si dans profession,si j'avais pas fait une clé étrangère et que j'avais juste mis un char field, j'aurais pu dire, bah en fait moi quand je renseigne, je tape à la main comptable.
00:26:18 :parce que si je fais un choice field, en fait, le choice, je vais pas le faire parce qu'ici ça va bouger ma base de données, mais en fait ce que vous faites,c'est que vous faites un choice, comme ça vous définissez en gros, voilà masculin, féminin, c'est pas mal ça. Et ici vous dites, je vais le mettre ici d'ailleurs,
00:26:38 :employé, allez je vais le faire, gender, je vais mettre genre, du coup si c'est un homme ou une femme, et donc là on dit modèle char field,et donc là je lui dis choice, ici je lui définis, donc là il va falloir que j'applique mes migrations, et je vais lui dire nulle, true et blank true,
00:27:00 :sinon il va me faire chier, python manage make migration, comment elle s'appelle mon application, c'est employé app, python manage migrate,donc là on retourne, donc inverse et été. En fait moi le choice, je l'utilise vraiment quand je sais que la liste elle est fixe,
00:27:38 :par exemple, je sais plus la dernière fois Gabriel il parlait de son application où il avait mis l'extension du numéro téléphone en fonction du pays,ça c'est vraiment un truc qui est fixe et qu'on sait que ça ne changera pas. Par contre là ce que j'ai fait, donc là si je retourne,
00:27:52 :donc là je save, maintenant quand je vais dans mon employé vous voyez que j'ai un nouveau, j'ai une nouvelle liste de possibilités pour définirquel est le genre de la personne, donc c'est masculin ou féminin, donc là on est content, on se dit que c'est bon notre application elle est robuste
00:28:12 :et machin, parce que ici là dedans j'ai défini la liste des choix possibles et je l'ai défini, vous voyez ici il suffit de dire où est-ce que je suis,donc ça reste un share field et en fait on limite les choix possibles à choice, donc c'est tout simple. Mais imaginez maintenant que je sais pas,
00:28:29 :vous avez un audit social ou je sais pas des droits de l'homme ou bref je dis une connerie et qu'en fait on vous dit bah en fait c'est de la ségrégationce que vous faites parce qu'il y a des gens qui sont non-binaires ou des choses comme ça et du coup il faudrait en plus de masculin et féminin,
00:29:00 :Et donc si vous êtes dans ce cas là c'est un peu chiant parce que imaginez que vous êtes développeur, vous avez développé l'application pour une entreprisequi veut gérer X par exemple ou autre, imaginez que vous avez développé cette application pour une entreprise, vous leur avez mis le code etc,
00:29:19 :et bah ça veut dire que si eux ils veulent des nouveaux choix en plus et bah il faut qu'ils vous rappellent, il faut que vous vous modifiez le code etc,c'est un peu pénible alors que si en fait j'avais fait, je vais essayer de le modifier comme ça, j'espère qu'il va pas me faire chier,
00:29:39 :bon on va voir, au lieu de faire ça si j'avais fait le gender je vais définir une nouvelle classe, class genre model et donc là genre nameégal, donc là pareil y'a pas de soucis, et là ce que je vais mettre, je pense qu'il va me faire chier, il va gueuler hein,
00:30:14 :models, du coup on veut une foreign key, genre machin ok, donc là maintenant je fais python manage, make migration,nettoyer app, l'instant de vérité, c'est bon ça marche, c'est toujours un peu frileux vous savez quand je modifie des trucs dans la base des donnéesdu coup ça fout parfois la merde et des fois il faut vraiment le pourpartir à zéro, donc là maintenant on a un petit peu changé
00:30:49 :et en fait le gender, il ne l'a pas pris, je ne l'ai pas enregistré, maintenant en fait les genres, bon là imaginez j'avais mishomme, et là je mets homme, bon vous me voyez venir en fait, le truc c'est que, attendez il faut que je le définisse ici,gender, name, idf, str, ok, et donc maintenant si on retourne dans employé, et ben en fait je peux, donc là imaginez c'est le homme femme
00:31:51 :que j'avais mis tout à l'heure, mais maintenant c'est que, ben en fait l'administrateur imaginait que vous avez livré l'applicationje ne sais pas au chef de produit dans la boîte, ben en fait s'il est l'administrateur il peut aller tout simplement lui-mêmesans avoir à rentrer dans le code etc, vous voyez c'est inconcevable de dire à un client à qui vous livrez le code, de dire tu vas modifier
00:32:11 :dans le code, tu rajoutes des choix etc, lui ce qu'il faut c'est qu'il puisse tout faire depuis l'interface administrateur, donc du coup vous allezdans genre, vous en ajoutez un, vous dites autre, save, employé, vous retournez, et là maintenant vous pouvez choisir ce que vous voulez.
00:32:29 :J'ai perdu mes occurrences en base de données, comment ça?Oui, alors, quand t'as refait ta migration, t'as perdu ta base de données là, les occurrences qu'il y avait à l'intérieur?
00:32:49 :Non, non, non, regarde j'ai tout gardé, j'avais profession, DRH, comptable etc, en fait quand j'ai fait ma migration, moi j'ai juste étémodifier, j'ai modifié ici le genre, j'ai changé la manière dont il était défini, et j'en ai créé une nouvelle, donc en fait il m'a justeajouté une nouvelle table dans ma base de données et il m'a modifié l'attribut genre, comment il était défini.
00:33:17 :Mais en fait, genre ça reste un ShareField, parce qu'en fait au final c'est un forenky de genre qui est déjà un ShareField, donc en faitj'ai même pas modifié le type de données, c'est juste que j'ai modifié la manière dont on le renseigne.
00:33:40 :Ok, donc, est-ce que vous avez bien capté le concept de clé étrangère? Et vraiment, moi au début quand je faisais Django,je faisais ça en fait, quand je voulais juste limiter et restreindre le nombre de choix possible pour un champ, je faisais toujours unchoice fields etc. Mais en fait c'est beaucoup plus flexible de faire comme ça, avec un forenky comme ça, vous pouvez le gérer après dans
00:34:05 :votre interface admin et puis avoir à modifier le code. Donc là, qu'est-ce qu'on va faire? J'avais dit quoi dans le programme?Donc création, ça on a fait, ça on a fait, ça on a fait, ah oui, les listes display. Là vous voyez, je vais créer peut-être d'autres types
00:34:45 :le fameux str. Ok, donc j'ai défini plusieurs employés, contrat, profession, ça marche, on va peut-être rajouter la direction.On va créer plusieurs employés maintenant, donc on va dire, on a créé Jean Jean, on va créer Michel Michel, noter l'inventivité des noms etprénoms que je choisis, c'est un homme, il est à 1300, date de naissance, bon ça désolé pour les dates, je les changerai, date d'embauche,
00:35:29 :on va dire 1979, date d'embauche 2022, profession, direction, contrat, cdi, ok, je vais en ajouter encore un autre, on va dire Marie Louise,genre femme, on va mettre 2500 plus que les deux hommes qu'on a créés, comme ça on rééquilibre les balances, date de naissance on va dire1989, date d'embauche on va dire, bon c'est aujourd'hui ça, date d'embauche, aller, drh, on va mettre direction pour ne pas faire cliché, cdi,
00:36:23 :ok, donc là vous voyez on a un affichage un petit peu, je le trouve pas ouf en fait, l'affichage de mon interface admin, parce que je vois justemes objets, en fait ce que je vois c'est ce que j'ai défini ici, dans le nom, après je pourrais faire un truc un petit peu plus descriptif,
00:36:59 :et des fois avec le nom on sait pas exactement si c'est un homme ou une femme, enfin des fois on peut avoir des doutes, donc là imaginons on fait ça,ok bon c'est un peu mieux parce qu'on voit prénom, machin, si c'est un homme ou une femme, mais tiens lui il a pas de genre, on va lui mettre quand même,
00:37:19 :voilà c'est pas top quand même, on voit pas bien ce qu'il se passe, donc ce qu'il faut faire dans ce genre de cas c'est dans la classe admin, on va définir,en fait on va surcharger, ah ouais merci, qu'est-ce qu'on peut, en poste ici, non ça va pas être la vue Céline, ici tu voudrais rajouter un bouléen
00:37:47 :en poste pour jouer avec listfilter, ah oui effectivement je pourrais faire ça, mais je vais le faire après peut-être.Donc là ce qu'on va faire c'est que on va surcharger l'interface admin pour qu'elle affiche d'une manière un peu plus sexy nos objets.
00:38:07 :Donc ce qu'on fait c'est qu'on dit classe employé admin, et vous voyez en fait il me propose déjà l'intelligence artificielle, tout ce qu'il me faut,et ici il faut que je l'enlève parce que je l'aime bien, j'aime bien la redéfinir après, il faut l'ajouter en fait, admin.site,
00:38:33 :et donc là il faut ajouter les deux, et je vais même, je vais l'enlever, ça aussi,ouais il y a une question, Gabriel, ouais ouais, tu fais admin.site for register du coup avec ta classe employé,
00:39:09 :ouais, et employé admin, attends pourquoi, ah ok c'est bon, parce que je l'ai enlevé là en fait,j'aime bien la faire apparaître en même temps sinon je vais perdre.
00:39:20 :Ok, je ne comprenais pas parce que je marchais pas comme ça, parce que moi j'utilise le décorateur en fait, c'est bon.Non non t'inquiète, attends pourquoi par contre il me faut que j'y aille, j'ai oublié un méta quelque part,non,c'est marrant, et je pense qu'il passe par le décorateur, ça tu l'avais mis, ouais,
00:40:39 :attends moi je, pour le temps comme ça qu'est-ce que c'est que cet article,excusez-moi,le décorateur c'est quoi, ici tu le mets, tu fais un admin register,ouais voilà c'est ça, et puis il rentre pas en place, t'as de longues temps de modèle,et là tu redéfinis juste ta classe admin en plus comme ça,
00:41:43 :et voilà, et comme ça tu peux virer le admin, voilà c'est ça.Ok, attends je regarde parce que c'est abusible, j'ai un problème,ah il est dans les, ouais c'est parce qu'il est déjà là,ça a résolu le problème on dirait, bah ouais pas mal,attends par contre ça m'étonne, parce que je suis tout le temps comme ça,
00:42:15 :ok bon bah c'est pas grave je vais pas perdre de temps là dessus je regarderai.Ok donc là vous avez vu déjà ça a changé, en fait la vue elle a carrément changéet je trouve qu'elle est beaucoup plus agréable, en fait on voit ici carrément avec des tableaux,
00:42:28 :par tableau, merci hein Gabriel, et puis je vois aussi Fernando,merci pour le admin register,vous voyez en fait on a un tableau qui est presque interactif,où en fait on a par colonne, on a une vue beaucoup plus dégagée,donc ça c'est grâce au liste display, et ce que vous pouvez même faire en plus,
00:42:46 :c'est le liste, vous pouvez mettre un liste editable,vous voyez je fais comme ça, et si j'update,bah en fait je peux même carrément déjà éditer mes objets à l'intérieur de mon tableau,j'ai pas besoin de rentrer dedans à chaque fois, tout se fait très bien,je peux modifier ici vous voyez si je mets 2500, je fais save,
00:43:07 :ok on est content tout se passe bien, et vous voyez je fais cdd,voilà donc là je trouve que c'est super intéressant dans l'interface admin de pouvoir faire ça,on peut avoir une meilleure vue, et puis modifier directement.
00:43:19 :Donc là qu'est-ce qu'on pouvait faire, ah oui,je voulais vous montrer aussi les listes filteurs, donc là vous voyez pour l'instant j'ai rien du tout,il suffit juste d'ajouter, on peut ajouter, on peut dire liste filteur,et donc là on peut dire, on peut vouloir créer par genre, par profession, par contrat,
00:43:40 :donc on peut y aller, on y va, et donc là vous voyez en fait il m'a ajouté un sidebar ici,avec des filtres, et donc là je peux filtrer uniquement que les hommes,donc là j'ai que les hommes, je peux remettre all, ou je peux les réduire comme ça,
00:44:04 :je peux dire je veux voir que les cdi, donc j'ai que 2 cdi ici, je peux dire qu'air filter,je peux même combiner, je peux les combiner, je peux dire que les cdi,donc là je vais en mettre un en comptable, je veux que les cdi en comptable,donc là je fais voilà, et donc j'ai que celui-là.
00:44:22 :Donc là je trouve que c'est assez stylé, les filtres qu'on peut faire,tout à l'heure Gabriel proposait de mettre un boulet 1 pour pouvoir dire,on filtre yes ou no, est-ce que c'est un truc qui est en poste,donc on pourrait le faire, mais voilà, donc ça je trouve déjà que c'est vraiment pas mal,
00:44:38 :déjà là vous voyez l'interface admin, elle commence à être assez intuitive,on peut faire pas mal de choses, et moi ce que j'aimerais bien faire maintenant,c'est pouvoir faire un export de ma base de données, je veux un tableau, un fichier Excel,qui me sort tous mes fichiers pour que je puisse les exporter, je sais pas,
00:44:58 :pour faire la fiche d'EP ou des choses comme ça.Donc il y a plusieurs solutions, ce qu'on pourrait faire, vous voyez ici,là les actions, donc là il y a une action par défaut qui est définie par Django,c'est delete selected employees, donc là par exemple si je fais,
00:45:16 :si je fais une select et que je fais delete, go, ok il m'a supprimé une entrée.Donc ça on peut les définir à la main si on veut, enfin on peut définir nos propres méthodes custom d'employés.
00:45:32 :On pourrait par exemple définir une méthode custom qui va prendre les salaires de tout le mondeet qui va faire la moyenne des salaires, ou je sais pas, faire un groupe buy,avec Panda par exemple, et puis juste faire la moyenne des salaires par profession.
00:45:49 :Vous voyez par exemple si j'ajoute, donc là on a quoi, je vais d'abord vous montrer l'exportet puis après on fera ça si il y a le temps.
00:45:58 :Donc qu'est-ce qu'on va faire, on va, déjà je vais aller retourner dans mon programme, ok,admin filter c'est bon, ça c'est bon, je vais d'abord plutôt, ouais je vais vous faire l'exportet puis les dates je vous montrerai plus tard.
00:46:22 :Donc la lib elle s'appelle Django import export, Django import export, celle-là, ok donc il faut d'abord l'installer,après ils disent quoi il faut, je crois qu'il faut aller la mettre dans les, introduction, installation, configuration,ouais il faut bien aller la mettre dans les installs, ok, settings, normalement c'est bon.
00:47:15 :Ok donc en fait ce qu'il faut faire, install dans ton appli et c'est à mettre dans le requirement,en fait j'installe dans mon fichier, j'installe dans mon environnement virtuel et après quand je vais vouloir exporterje vais faire un flip, freeze requirements.txt, donc là en fait je vais balancer tout,
00:47:43 :la description de toutes mes bibliothèques installées dans un fichier requirements et ça après comme çaje pourrais aller l'installer ailleurs sur un serveur ou autre chose, comme ça je ne me trimballe pas mon dossiervend avec toutes mes bibliothèques, je ne me trimballe que le fichier requirements, comme ça c'est beaucoup plus simple.
00:48:05 :Alors qu'est-ce qu'on va faire maintenant, on va, ici on va faire, import, import, import, ressources,et donc en fait pour pouvoir faire l'import export il faut d'abord créer une ressource,donc on va créer une ressource, là c'est employé ressources avec le modèle qui va bien,et il faut quand même que je définisse, d'abord je vais vous montrer ça, en fait j'ai des clés étrangères
00:48:41 :donc il faut que je définisse, attendez je réfléchis, comment je vais le faire, c'est quoi le mieux,et donc là pour tout ce qui va être clé étrangère, profession, je vais mettre mon nom, profession et contrat type,au lieu de contrat tout simplement, sinon en fait il va mettre les numéros qui correspondent aux clés étrangères,
00:49:15 :ça va être un peu chiant, donc là on a nom, prénom, genre, genre name, salaire, date de naissance, date d'embauche, profession,et pourquoi j'ai écrit quoi, ouais effectivement, est-ce qu'avec ça on est bon, et il faut que je fasse un python manage collect type,j'ai pas défini de, si c'est bon, ah oui, il faut que je définisse mon static route,
00:50:06 :je vais m'appeler static files, elle est sympa ton IA là, c'est rempli pour toi, ouais je te l'accorde, en plus elle est gratuiteparce qu'il y a GitHub copilot, mais je crois que c'est 10 euros par mois, ouais il me semble, là c'est Codeium,elle est dispo sur PyCharm et VSCode, mais franchement elle est vraiment chanmée, et vous pouvez même écrire,
00:50:36 :vous voyez ici je suis dans les modèles, vous pouvez même écrire du commentaire, vous pouvez dire write me a new class to have,je sais pas ce qu'on pourrait avoir, qu'est-ce que vous voulez comme modèle, donnez-moi une idée, qui est lié avec les employés,ça pourrait être, il y a TAB9 aussi, un quoi? TAB9, en IA, TAB9, ah oui d'accord, et ça c'est gratuit aussi ou pas?
00:51:12 :Ouais gratuit, et pareil j'écris des commentaires des fois et juste après je fais TAB et puis je crée des trucs.Parce que j'avais regardé TAB9, je savais pas que c'était gratuit, je pensais que c'était payant.
00:51:26 :Moi je l'ai pas payé en tout cas, je l'ai pris sur VSCode.Et bah, du coup là il me le fait pas, bah merci Céline pour l'info.
00:51:42 :Bon, comme par hasard le jour où j'essaye de vous montrer ça marche pas.Faut commencer la ligne, après normalement ça propose.Bon bref, vous voyez l'idée, il m'aurait choqué, il était en train de faire chier de froid, je l'ai pas laissé assez temps.
00:52:10 :Mais oui, donc là c'est Codium et puis du coup TAB9 comme le dit Céline.Ok, donc là maintenant je retourne à ce que je faisais.
00:52:25 :Je retourne dans mon application. Pourquoi il l'a pas pris?Ici normalement je devrais avoir... Il me manque quelque chose.Ah oui, donc là j'ai créé ma ressource.
00:52:41 :En fait ici la ressource, où est-ce que c'est?Désolé, c'est un peu comme je zoom un peu, des fois je ne m'y retrouve plus.Donc là en fait j'ai créé une ressource, c'est en fait ce dont a besoin la bibliothèque Import-Export.
00:52:56 :C'est pour lui indiquer qu'est-ce qui va être exporté ou importé.Et une fois que vous avez créé votre ressource, il suffit juste de renseigner dans votre employé admin, votre ressource classe.
00:53:08 :Donc là souvent il fait une erreur, il y a un S, et vous mettez entrecroché parce que c'est une liste.Donc là je lui dis, tu vas aller utiliser la classe ressource que j'ai définie ici et qui va être comme ça.
00:53:21 :Là vous voyez par exemple, j'ai mis profession double underscore non profession,parce qu'en fait profession c'est une clé étrangère.Et si je ne mets pas non profession, il va m'afficher l'ID de profession.
00:53:35 :Vous voyez en fait l'ID qui correspond c'est 1 par exemple, et bien il va m'afficher, alors que moi je veux le nom.Donc c'est juste un petit truc qu'on peut faire avec Django, c'est le double underscore quand vous avez une clé étrangère.
00:53:47 :Donc là maintenant si je retourne dans mon application, j'ai toujours pas ce fichu,parce que je dois faire de la migration en trois pas.Je vais devoir oublier quelque chose, ah oui je sais ce que j'ai oublié.
00:54:30 :Import export point admin import, voilà.Et ça il faut le mettre dans les riffages ici aussi en premier.Ok.Donc là vous voyez j'ai deux boutons qui se sont affichés, import et export.
00:54:50 :Et si je vais dans export, donc j'arrive en fait dans une page, vous voyez c'est pas moi qui ai développé,c'est vraiment la librairie qui fait ça.
00:54:59 :Je fais export, il me propose plusieurs formats, donc moi je dis je veux du xlsx, je fais submit,je vais voir dans mes trucs, et vous voyez en fait j'ai un export en Excel de tous mes objets.
00:55:14 :C'est énorme.Ça franchement c'est super, et attends t'as encore rien vu Gabriel,parce que imaginez que vous avez un fichier Excel, le sens inverse exactement il fonctionne,avec justement le import, vous pouvez dire en fait tu choisis ton fichier Excel dans lequel tu as toutes tes datas,tu dis c'est un format xlsx, tu submits, et là il te balance tout dans ta base de données.
00:55:52 :Il faut que je modifie un petit peu la manière dont je fais, si vous voulez voir une démo,mais rassurez-vous ça fonctionne.Parce qu'en fait ici c'est pas comme ça qu'il faut le définir, il faut le définir comme ceci.
00:56:09 :Genre, si on veut que ça marche dans les deux sens, il faut le définir comme ça.Attendez je vais aller le chercher dans un exemple que j'ai déjà fait.
00:56:36 :C'est ça.Et ensuite je vais définir là.C'est du fil column name, ok.En fait là, regardez, je ne vais pas rentrer dans le détail là, mais on est obligé de faire ça,sinon quand je vais faire l'import, vous voyez ici dans mon fichier Excel, je vais devoir rentrer des numéros de clé,
00:57:12 :alors que c'est plutôt comme ça qu'il faut le définir.Donc on dit field, il ne veut pas m'aider là-dessus.Column widget, attendez c'est parce que je n'ai pas le...
00:57:39 :Vous voulez une démo de l'import?Je vais faire, je suis en train de... Il y a une question de Gabriel je crois.Sur ton Excel, si tu par exemple veux l'importer justement,tu as mis un type de données qui n'est pas le même type que le champ dans la base de données, ça te l'enjette dans tous les cas.
00:57:59 :Oui, il va te faire de la merde. Je mets juste le truc en place comme ça je vais pouvoir vous faire une démo.Alors genre profession, et il nous reste contrat.
00:58:25 :Maintenant, qu'est-ce que... Ah oui, en fait ce qu'on veut, on ne veut pas avoir à rentrer à la main le ID.Parce que ça c'est un peu chiant et du coup il faut lui renseigner ici.
00:58:48 :Je pense que là on est bon.Ok, parce qu'en fait ça ici, import ID fields, je veux qu'il crée automatiquement,je ne veux pas avoir à le rentrer dans mon fichier Excel.
00:59:05 :Donc on va aller refaire un petit tour là-dessus, j'espère que ça va fonctionner.Donc là on a Marie, Louise et Jean-Jean, on fait un export en Excel.
00:59:19 :Donc là on va récupérer, en fait moi ce que je fais c'est que je fais d'abord un export,comme ça je sais le format qu'il faut avoir pour ne pas me planter.
00:59:27 :Et donc là maintenant je vais... Vous pouvez définir ici l'ordre dans lequel vous voulez afficher.Là on peut le faire mais ce n'est pas le plus intéressant ici.
00:59:38 :Genre profession, on peut définir, on peut dire en fait tu m'affiches d'abord nom, prénom, etc.Mais on ne va pas le faire ici.Donc là on va dire, on va créer les femmes qui sont dans la direction, qui sont en CDI.
00:59:53 :On va dire Fanny, Marine, Mathilde et puis on va faire quand même des hommes qui sont DRH, CDD.Et donc là on va dire Yonel, Mathieu et Greg. Pour les salaires, pour les prénoms, qu'est-ce qu'on va mettre?
01:00:26 :Fanny, arrêtez-moi là c'est compliqué, Fanny.Ah mais en plus j'ai fait n'importe quoi, là c'est des noms.Pour les noms on va dire, c'est dur de donner des noms comme ça au hasard sans le savoir.
01:00:45 :Durot, Durand, Dupont, ah Dupont j'avais déjà. Je vais en prendre un, Cali, Coco, merci, encore un dernier.Chélide, super. Mathieu qui est à Chédidi.Bon allez on va laisser Chédidi.
01:01:20 :Ici on va mettre un nombre aléatoire, on s'en fout.Aléa entre 1000.Et vous voyez en fait ce qui est bien aussi c'est qu'on peut profiter de la puissance de Excel pour justement créer nos objets avant de les balancer dans Django.
01:01:41 :Vous voyez j'utilise les bornes aléatoires là, je veux un salaire entre 1250 et 1500.C'est un point virgule, donc je fais ça. Ici les dates que je ne vais pas trop m'emmerder, je vais dire qu'on les copie.
01:02:00 :Pareil pour les dates d'embauche.Tiens là pourquoi il me fait ça? Bon il y a des petits trucs à régler encore.Parce qu'en fait ça j'aurais dû les enlever.
01:02:20 :Je vais le laisser comme ça parce que sinon ça va foutre la merde.Direction, et là on a dit DRH.Et puis ça, ça va falloir que je mette les mêmes par contre.
01:02:34 :Désolé c'est un peu long.Ici j'ai un doublon parce que là j'ai défini comment je veux qu'il soit en export et en import et ici j'ai défini comment je veux qu'il soit en export.
01:03:11 :Donc c'est pour ça qu'il vaut mieux faire directement ça.Mais bon je voulais vous le montrer rapidement.Mais du coup c'est pour ça que tu me l'affiches en doublon et que je suis obligé de me taper les deux à écrire.
01:03:24 :On y est presque.Par contre il faut bien que j'oublie de supprimer celle là parce qu'en fait si je les laisse comme elles existent déjà il va gueuler.
01:03:37 :Donc là on dit on sauvegarde.Ah putain c'est pas vrai.Création, employé, enregistré, ok.Et donc maintenant si on retourne, je vais retourner là.Je fais import, choisir le fichier, document déchargement, création employé, transférer, submit.
01:04:07 :Bon comme il me dit que j'ai des problèmes.C'était quoi son problème?Le format c'est un petit peu chiant.C'est fini, catégorie.Mais bon vous avez compris l'idée mais j'aimerais bien quand même que ça marche pour la démo.
01:04:55 :Ça ne le ferait pas parce que tu as des formules dans les feuilles Excel, tu ne pourrais pas tout transformer en valeur?Peut-être, peut-être, c'est pas une mauvaise idée.
01:05:07 :Il te manque un cdi au dernier aussi, peut-être que ça va te...Ouais, mais en fait Lym il avait l'air de me dire que c'était un problème de ID donc c'est pour ça que ça m'inquiète un peu.
01:05:17 :Enfin ça m'inquiète, ça m'inquiète pas mais...Juste les valeurs.Et je vais peut-être supprimer ceux-là parce que c'est peut-être ceux-là qui font chier.Et je vais aussi supprimer là-dedans directement mon...
01:05:39 :Merde, c'est pas la bonne application.Celui-là, je vais le supprimer parce qu'en fait...Excusez-moi, je regarde encore.Modèle joueur, non normalement ça devrait fonctionner.Allez, on réessaye.
01:06:22 :Est-ce que je l'ai bien sauvegardé?Ah voilà, ça fonctionne.Donc en fait il vous montre un petit peu avant, il vous demande de confirmer, donc là il vous dit un peu ce qu'il va faire.
01:06:49 :Donc là il vous fait confirmer, import et là vous avez toute votre base de données qui est mise à jour avec ce fichier Excel.Donc il y avait une question tout à l'heure de Stéline, je crois.
01:07:04 :Effectivement il faut faire attention quand même dans votre fichier Excel.Par exemple là vous voyez cdi, cdi, il faut que ça soit un truc qui existe déjà dans la base de données.
01:07:14 :Pareil pour direction, drh sinon et même femme, homme sinon il va gueuler.Parce que c'est des clés étrangères.Si ce n'était pas des clés étrangères, tant que vous respectez le type de données, genre un sharefield etc.
01:07:29 :Et il y a un truc aussi, c'est qu'il ne va pas créer automatiquement.Là vous voyez par exemple si je mets cdo et que cdo n'existe pas dans la base de données, il ne va pas le créer automatiquement.
01:07:39 :Je pense qu'on pourrait faire en sorte que oui, mais voilà, ce n'est pas de base en tout cas.Voilà, donc retenez bien cette librairie qui est vachement efficace.
01:07:53 :C'est hyper puissant, vous pouvez créer rapidement vos modèles et les exporter.Ouais, en fait le problème c'était, en fait je me suis un peu fait chier là parce que j'ai des clés étrangères du coup,j'ai dû définir comment je veux que mes clés étrangères soient renseignées, soit avec l'id ou soit avec le nom de la clé étrangère en elle-même.
01:08:36 :Voilà, il n'a pas trop kiffé et ça pensez bien à le mettre parce que vous voyez quand vous avez une base de données,vous imaginez que là ça aurait été chiant si j'avais dû rentrer un id parce que l'id doit être unique.
01:08:54 :Donc voilà si l'id n'est pas unique etc. ça aurait fait chier.Donc là le fait de mettre import id fields id, ça veut dire qu'il va le renseigner automatiquement.
01:09:03 :Je ne comprends pas trop ta question Jean-Phil, je comprends ce que ça veut dire recursif, mais tu peux élaborer?Attends, tu sors de ta saisie de tes fichiers, tu perds tout, ou ta base admin elle existe toujours quoi qu'il arrive?
01:09:34 :Ah oui, il vient rajouter, tu vois là j'ai chez Didi, si j'ajoute un truc, il vient juste rajouter.Donc si je fais, on va rajouter un homme, direction, et là on va dire, on va dire, Eiger, Jean-Phil, on va le dire comme ça.
01:10:04 :On va mettre un bon salaire, on ne va pas se gêner.Je prends.Et donc si je fais ça, création employé, et que je fais import, choisir fichier, il n'a pas pris encore, transférer,XLSX, submit, il a pas enregistré le bon, parce que tu vois il met encore tout ça, donc ça veut dire qu'il n'a pas pris le bon fichier.
01:10:45 :21h11, là c'est pas le bon, pourquoi il est pas là?Création employé, enregistré, mais pourquoi il me fait fichier? Je vais enregistrer un nouveau.Donc tu vois il me dit confirme import, donc ok, et en fait tu vois il m'a bien rajouté avec tous ceux qui existent déjà.
01:11:29 :Il n'y a pas de soucis en fait, mais c'est pour ça justement qu'on a une clé étrangère, c'est que là en fait en backend,tu vois il va rajouter une clé primaire, le ID que moi j'ai pas renseigné, bah lui en fait il va m'en créer un automatiquement,ce qui fait qu'il va pas écraser d'autres entrées.
01:11:53 :Ok.Ça répond à ta question, c'était ça que tu voulais?Oui et ça et puis aussi le fait que si le lendemain tu rouvres ton appli, tu retrouves tous ces gens là.
01:12:06 :Ah bah oui bien sûr, c'est vraiment le principe de se dire on a une base de données, en fait ta base de données elle reste,bon là je suis en local du coup c'est une petite base de données en SQLite 3, mais tu vois si je ferme mon application
01:12:21 :et que je quitte tout et que je relance mon application, je vais retrouver tous mes petits sans problème tu vois,je fais admin, je retourne voir mes employés, tu vois t'es toujours là avec ton bon gros salaire sans problème quoi.
01:12:44 :Ok merci.Je t'en prie.Bon bah voilà, j'ai un peu dépassé mais j'avais d'autres trucs à vous montrer mais c'était sur les dates et créer des actions aussi.
01:12:58 :Je vous montrerai la prochaine fois comment on peut créer une action custom.Imaginez en fait qu'on veuille rassembler les salaires, ça je l'avais déjà montré avec Panda, on peut faire un group buy,donc imaginez on veut faire la moyenne des salaires par profession, donc on voudrait la moyenne des salaires par direction,
01:13:20 :par DRH etc. ou même le max, donc on pourra créer une action custom, la prochaine fois je vous montrerai comment on fait ça.Avec Panda et group buy et puis on combinera avec ça, et ici on rajoutera au lieu d'avoir des dates, on fera export, je sais pas quoi.
01:13:40 :Rappelez le moi la semaine prochaine si j'oublie ça mais je pense qu'on fera un petit peu ça la prochaine fois.Oui je suis d'accord, les frameworks sont tous un peu construits pareil, c'est toujours un peu les mêmes mécanismes.
Aucune occurrence trouvée pour « ».