Bonjour a tous
je veux crée une api de covoiturage, donc j'ai crée ces principaux modèles:
et le Serializer :
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 class lieux(models.Model): wilaya = models.CharField(max_length=20) ville = models.CharField(max_length=20) rue = models.CharField(max_length=30) class Course(models.Model): user_driver = models.ForeignKey(User, on_delete=models.CASCADE) time_creation =models.DateField() time_depart =models.DateField() nbr_places = models.IntegerField() trajet_course = models.ManyToManyField(lieux,through='trajet',related_name='trajets',blank=True) participents_course = models.ManyToManyField(User, through='participents',related_name='U_P',blank=True) demande_course = models.ManyToManyField(User, through='demande_participe',related_name='D_P',blank=True) class trajet(models.Model): #type_c = [('D','depart'),('AV','arrivé'),('AT','arret')] type_course = models.CharField(max_length=10,null=True) num_arret = models.IntegerField(null=True,blank=True) arret=models.ForeignKey(lieux, on_delete=models.CASCADE,null=True) course_arret = models.ForeignKey(Course, on_delete=models.CASCADE,null=True) class participents(models.Model): users_voyageur = models.ForeignKey(User, on_delete=models.CASCADE) course_participer = models.ForeignKey(Course, on_delete=models.CASCADE) prix_payer = models.IntegerField(null=True) class demande_participe(models.Model): users_demadeur = models.ForeignKey(User, on_delete=models.CASCADE) course_demande = models.ForeignKey(Course, on_delete=models.CASCADE) reponse_demande = models.IntegerField(null=True)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class courses_json(serializers.ModelSerializer): #type_course = serializers.ReadOnlyField(source= 'trajet.type_course') #num_arret = serializers.ReadOnlyField(source='trajet.num_arret') user_driver = UserSerializer(read_only = True) #trajet_course = trajet_json(many = True,read_only = True) trajet_course = lieux_json(many = True) participents_course = UserSerializer(many = True,read_only = True) demande_course = UserSerializer(many = True) class Meta: model = Course fields = ('__all__')
et j’obtiens ce résultat :
alors que je veux avoir le model trajet avec les lieux dedans comme ça :
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
37
38
39
40 { "id": 15, "user_driver": { "username": "animalx123", "id": 30 }, "trajet_course": [ { "id": 34, "wilaya": "annaba", "ville": "centre ville", "rue": "" }, { "id": 35, "wilaya": "alger", "ville": "dergana", "rue": "" } ], "participents_course": [], "demande_course": [ { "username": "malcomx", "id": 31 }, { "username": "ZedNiiw55", "id": 57 }, { "username": "animalx123", "id": 30 } ], "time_creation": "2019-09-28", "time_depart": "2019-12-14", "nbr_places": 3 },
j'ai bien cherché sur le net et forum mais j'ai pas trouvé une solution a ma problématique, car même dans le model (demande_participe et participents) me retourne pas tout les champs mais que qui sont en relation (ForeignKey),
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
37
38
39
40
41
42
43
44
45
46 { "id": 15, "user_driver": { "username": "animalx123", "id": 30 }, "trajet_course": [ { "type_course":"départ" { "id": 34, "wilaya": "annaba", "ville": "centre ville", "rue": "" }}, { "type_course" :"Arrivé" { "id": 35, "wilaya": "alger", "ville": "dergana", "rue": "" } ], "participents_course": [], "demande_course": [ { "username": "malcomx", "id": 31 }, { "username": "ZedNiiw55", "id": 57 }, { "username": "animalx123", "id": 30 } ], "time_creation": "2019-09-28", "time_depart": "2019-12-14", "nbr_places": 3 },
merci de m'aider car ça fait des semaines que je coince sur ce problème.
Partager