Bonjour

Je voudrais créer des API avec django REST Framework
Je veux faire une API qui retourne des offres. Une offre a un statut avec un code et un libellé
J'ai créé un model pour les statuts et un pour les offres avec une clé étrangère vers les statuts


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
class Status(models.Model):
    code = models.CharField(max_length=5, unique=True)
    Label = models.CharField(max_length=128)
 
class Offers(models.Model):
    appelation = models.CharField(max_length=256)
    year = models.IntegerField()
    typeOffer = models.CharField(_("type"), max_length=128)
    volume = models.FloatField()
    price = models.FloatField()
    location = models.CharField(max_length=256)
    status = models.ForeignKey(Status, related_name='statut', on_delete=models.DO_NOTHING)
J'ai créé deux serializers

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
class StatusSerializer(serializers.ModelSerializer):
 
    class Meta:
        model = Status
        fields = ("__all__")
 
class OfferSerialzer(serializers.ModelSerializer):
 
    status = StatusSerializer()    
 
    class Meta:
        model = Offers
        fields = ('id','appelation','year','typeOffer','volume','price','location','status')
Quand j'exécute mon API ("http://localhost:8000/offers/") pour retrouver mes offres, j'obtiens ceci et qui me va très bien (car ça permet à mon front en React d'avoir toutes les infos)

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
 
[
    {
        "id": 1,
        "appelation": "Chénas",
        "year": 1950,
        "typeOffer": "Vrac",
        "volume": 130.0,
        "price": 2600.0,
        "location": "Grenot",
        "status": {
            "id": 1,
            "code": "WAIT",
            "Label": "En attente de validation"
        }
    }
]
Je ne sais comment faire pour créer ne nouvelle offre en faisant référence à un statut existant. Quand je créé une offre, elle doit avoir un statut par défaut
Comment faire aussi quand je vais vouloir mettre à jour le statut de mon offre

Quand je vais appeler mon api "http://localhost:8000/offers/" en POST, est ce que je dois lui passer l'id d'un statut ? Si oui, faut-il modifier mon serializer pour ajouter l'ID du statut ?

Merci pour votre aide