python - 在保存方法中访问所需字段为假 - 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()
方法中不需要的字段。
解决方案
如果不需要这些字段,请使用dict.get()
:
self.validated_data.get("birth_date") # Returns `None` if the key is not there