2

I'm sending data like below to my django rest framework app.

{
 "email": "sa@gmail.com"
  "profile": {
              stripe_token: "tok_15iFaJRbriArhT", 
              stripe_id: "cus_5u3iksCCw", 
              quantity: "5"
            },
  "subscription": {
              subscription_name: "noidea"
            }
}

Based on my serializers and models I can get everything except quantity because I don't have a field called quantity on any of my models. But I would simply like to grab the value sent in the quantity field and then do something with it.

This is what I'm doing so far:

serializers.py

class UserProfilePaymentSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('stripe_id', 'subscribed','stripe_token')

class UserSubscriptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Subscriptions
        fields = ('subscription_name',)

class PaymentSerializer (serializers.ModelSerializer):
    profile = UserProfilePaymentSerializer()
    subscription = UserSubscriptionSerializer()

    class Meta:
        model = User
        fields = ('email', 'profile','subscription',)
    def update (self, instance, validated_data):
        profile_data = validated_data.pop('profile')
        subscription_data = validated_data.pop('subscription')
        print profile_data
        print subscription_data

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    telephone_number = models.CharField(max_length=100)
    stripe_id = models.CharField(max_length=255)
    subscribed = models.BooleanField(default=False)
    stripe_token = models.CharField(max_length=255)

class Subscriptions(models.Model):
    user = models.ManyToManyField(User)
    subscription_name = models.CharField(max_length=100)
Anthony
  • 33,838
  • 42
  • 169
  • 278

1 Answers1

0

Add quantity field to UserProfilePaymentSerializer. Then you can access quantity field in your validated data dictionary.

class UserProfilePaymentSerializer(serializers.ModelSerializer):

    quantity = serializers.CharField()

    class Meta:
        model = UserProfile
        fields = ('stripe_id', 'subscribed','stripe_token')

class UserSubscriptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Subscriptions
        fields = ('subscription_name',)

class PaymentSerializer (serializers.ModelSerializer):
    profile = UserProfilePaymentSerializer()
    subscription = UserSubscriptionSerializer()

    class Meta:
        model = User
        fields = ('email', 'profile','subscription',)

    def update (self, instance, validated_data):
        ....
        quantity = validated_data['profile']['quantity']
        ....
Rahul Gupta
  • 46,769
  • 10
  • 112
  • 126