Bonjour,
Voici les models suivants :
... 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 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)
Ce code source fonctionne avec des web services rest_framework.
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
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+![]()
Partager