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 :

Objets models et serializers


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut Objets models et serializers
    Bonjour,

    Voici les models suivants :

    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
    class Sample(models.Model):
        name = models.CharField(max_length=200, help_text='Sample name')
        pub_date = models.DateTimeField('date published', auto_now_add=True)
    
        class Meta:
            db_table = 'sample'
    def __str__(self):
            return self.name
    
    
    class Part(models.Model):
        sample = models.ForeignKey(Sample, on_delete=models.CASCADE, help_text='Sample')
        name = models.CharField(max_length=200, help_text='Part name')
        value = models.CharField(max_length=200, help_text='Part value')
    
        class Meta:
            db_table = 'part'
    def __str__(self):
            return '{} - {}'.format(self.sample.name, self.name)
    ... et les serializers suivants :

    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
    class PartSerializer(serializers.ModelSerializer):
        class Meta:
            model = Part
            fields = ('id', 'name', 'value')
    
    
    class SampleSerializer(serializers.ModelSerializer):
        part_set = PartSerializer(many=True)
    
        class Meta:
            model = Sample
            fields = ('id', 'name', 'part_set')
    
    
        # the object and the nested objects are saved
    def create(self, validated_data):
    
            # the parts are removed of the validated_data and are saved in the part list
    part_validated_data = validated_data.pop('part_set')
    
            # the sample without parts is saved on the database
    sample = Sample.objects.create(**validated_data)
    
            # for each part object of the part list
    for each in part_validated_data:
                # the sample object added to the part object
    each['sample'] = sample
    
            # the part object serializer is instantiated
    part_set_serializer = self.fields['part_set']
    
            # the part objects of the part list are saved into database
    parts = part_set_serializer.create(part_validated_data)
    
            # the sample without parts is returned
    return sample
    Ce code source fonctionne avec des web services rest_framework.

    Le soucis est que je suis obligé de définir la variable part_set avec ce nom.

    Dès que je souhaite changer ce nom, le serializer ne reconnait pas la variable (après adaptation du code bien entendu).

    Comment faire pour avoir un autre nom de variable comme par exemple partial ? Cela est important car lors de l'affichage à l'utilisateur de l'objet au format JSON (retour du web service), celui-ci doit voir le nom partial.

    Merci d'avance.

    A+

  2. #2
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    Aller, je m'auto-réponds :

    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
    class SampleSerializer(serializers.ModelSerializer):
        values = PartSerializer(many=True, source='part_set')
    
        class Meta:
            model = Sample
            fields = ('id', 'name', 'values', 'filters')
    
        # the object and the nested objects are saved
    def create(self, validated_data):
    
            # the parts are removed of the validated_data and are saved in the part list
    part_validated_data = validated_data.pop('part_set')
    
            # the sample without parts is saved on the database
    sample = Sample.objects.create(**validated_data)
    
            # for each part object of the part list
    for each in part_validated_data:
                # the sample object added to the part object
    each['sample'] = sample
    
            # the part object serializer is instantiated
    part_set_serializer = self.fields['values']
    
            # the part objects of the part list are saved into database
    parts = part_set_serializer.create(part_validated_data)
    
            # the sample without parts is returned
    return sample
    Voili, voilou...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/08/2016, 16h08
  2. liée formulaire a l'objet model
    Par chlock62 dans le forum Django
    Réponses: 2
    Dernier message: 10/09/2015, 09h25
  3. Client Objet Model ECMAScript et autorisation réfusée
    Par cyril.legret dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 17/06/2011, 11h00
  4. Serialize objet Metier > Cannot Serialize winform !
    Par Haknaton dans le forum Windows Forms
    Réponses: 5
    Dernier message: 01/06/2009, 18h44
  5. [PDO] objet PDO et serialize
    Par ano74 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/08/2007, 12h14

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