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+