首页 > 解决方案 > 在保存方法中访问所需字段为假 - django

问题描述

我有一个serializer这样的:

class ProductOrderSerializer(serializers.Serializer):
    phone = serializers.CharField()
    name = serializers.CharField(required=False)
    product = serializers.IntegerField()
    birth_date=serializers.CharField(required=False)
    father_name = serializers.CharField(required=False)
    mobile = serializers.CharField()
    address = serializers.CharField(required=False)
    post_paid = serializers.BooleanField()
    national_code = serializers.CharField(required=False)
    current_line = serializers.CharField()
    install = serializers.IntegerField()
    is_extension = serializers.IntegerField()
    def save(self,**extra_fields):
        product = Product.objects.get(id=self.validated_data['product'])
        user = Account.objects.get(mobile=self.validated_data['current_line'])
        create = Payment(
            user_id=user.id,
            cost=product.total_price,
            status=''
            )
        create.save()
        order = ProductOrder (
            company = product.company_id,
            product = product,
            user = user,
            payment = create,
            name = self.validated_data['name'],
            mobile = self.validated_data['mobile'],
            phone = self.validated_data['phone'],
            birth_date=self.validated_data['birth_date'],
            father_name = self.validated_data['father_name'],
            address = self.validated_data['address'],
            national_code = self.validated_data['national_code'],
            post_paid = self.validated_data['post_paid'],
            install_id = int(self.validated_data['install']),
            status_id = 3
            )
        order.save()
        return order

但是我无法访问所需的false字段self.validated_data['FIELD_NAME'] ,因为我如何使用我serializers的 insave()方法中不需要的字段。

标签: pythondjangodjango-rest-frameworkserialization

解决方案


如果不需要这些字段,请使用dict.get()

self.validated_data.get("birth_date")  # Returns `None` if the key is not there

推荐阅读