IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Compréhension de la fonctionnalité "auto-created primary keys"


Sujet :

Django Python

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut Compréhension de la fonctionnalité "auto-created primary keys"
    Bonjour

    J'étais en Django3 et je passe en Django 4.2.
    J'utilise baker.

    En Django4, donc, je découvre l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueError: 'maTable' instance needs to have a primary key value before this relationship can be used.
    apparait.
    Je ne comprends pas cette erreur

    data = baker.make(maTable)
    provoque l'erreur

    data = baker.make(maTable, id=1)
    corrige l'erreur


    Je remarque:

    En Django 3.2, on peut personnaliser la gestion des clés primaires
    https://docs.djangoproject.com/en/3....d-primary-keys

    Je remarque dans les Releases Notes de Django4.1
    https://docs.djangoproject.com/en/5.0/releases/4.1/

    Reverse foreign key changes for unsaved model instances¶
    In order to unify the behavior with many-to-many relations for unsaved model instances, a reverse foreign key now raises ValueError when calling related managers for unsaved objects.

    avec, pour les related managers:

    https://docs.djangoproject.com/en/5....RelatedManager



    Bref,
    Pourquoi faut-t-il fournir la clé primaire en Django 4 lors d'une création d'enregistrement ?



    Cordialement
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Salut,

    Je ne connais pas le module baker, ce message est assez surprenant dans le sens où on t'oblige à utiliser un paramètre soit disant optionnel.

    Perso, j'ai eu beaucoup de soucis avec l'utilisation des factory dans les tests à partir d'un module qui se nommait Factory Boy

    Ça fait un moment maintenant, et il a certainement évolué, mais je n'ai plus trop confiance, je préfère créer mes propres utilitaires de tests (y compris les factory) afin de simplifier la création de mes modèles.

    Si j'ai un conseil à donner c'est de faire tes Factory toi même, c'est très simple et rapide à faire, et tu en maîtrises la totalité de leurs fonctionnalités.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/10/2009, 11h02
  2. Réponses: 0
    Dernier message: 04/02/2009, 12h36
  3. Create Table Select from avec Primary Key
    Par argyronet dans le forum SQL
    Réponses: 2
    Dernier message: 18/11/2008, 09h49
  4. auto-incrémentation sur une primary key avec sql server
    Par pops4 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/05/2007, 14h24
  5. Create Primary Key Errno 1005 (errno: 708)
    Par Macfurp dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 28/03/2007, 09h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo