簡體   English   中英

如何在Django Rest框架中獲取JSON數據而不將其綁定到模型

[英]How to get JSON data in django rest framework without tying it to a model

我正在將以下數據發送到django rest框架應用程序。

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

根據我的序列化器和模型,我可以獲得除quantity以外的所有東西,因為我的任何模型上都沒有一個稱為“數量”的字段。 但是我只想獲取在數量字段中發送的值,然后對其進行處理。

到目前為止,這是我正在做的事情:

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)

quantity字段添加到UserProfilePaymentSerializer 然后,您可以訪問經過驗證的數據字典中的quantity field

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']
        ....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM