Bonjour,

J'ai une table de relation entre deux objet, un utilisateur et une offre
Lorsque l'utilisateur veut accepter une offre, je créé un enregistrement dans cette table de relation qui me permet de savoir toutes offres acceptés par l'utilisateur (ce qui correspond à ce qu'il a commandé)

Je voudrais lors de cette association, modifier le statut de l'offre acceptée.

Voici ce que j'ai :

Un serializer pour l'association (commande):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
class Order_UserSerializer(serializers.ModelSerializer):
 
    def create(self, validated_data):
        order_customer =  Order_Customer.objects.create(**validated_data)
        return order_customer
 
    class Meta:
        model = Order_Customer
        fields= '__all__'
Une vue

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class Order_UserViewSet(viewsets.ModelViewSet):
    queryset = Order_Customer.objects.all()
    serializer_class = Order_UserSerializer
    permission_classes = [permissions.IsAuthenticated]
 
    def perform_create(self,serializer):
        serializer.save(customer_id=self.request.user.id)
Si j'exécute la requête, l'association est bien créée pour l'utilisateur et l'offre commandée


Mais je voudrais mettre à jour le statut de l'offre, j'ai essayé de faire ça pour mettre le statut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
class Order_UserSerializer(serializers.ModelSerializer):
 
    def create(self, validated_data):
        offer = validated_data.pop('offer')
        Offers.objects.filter(id=offer.id).update(status_id='SAMPL')
        order_customer =  Order_Customer.objects.create(**validated_data)
        return order_customer
 
    class Meta:
        model = Order_Customer
        fields= '__all__'
mais quand j'exécute la requête



j'ai cette erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
null value in column "offer_id" violates not-null constraint
DETAIL:  Failing row contains (20, 2020-06-20, 2020-06-20, 1, null).

Merci pour votre aide