Dav*_* D. 5 python django serialization django-rest-framework
我在Django Rest Framework 2中有这些嵌套的序列化器:
class BookingSerializer(Serializer):
reservation_history_id = serializers.IntegerField()
credit_card = 'api.v1.serializer.AddCreditCardSerializer()'
save_credit_card = serializers.BooleanField()
promo_code = serializers.BooleanField(required=False)
# validation stuff here ...
class AddCreditCardSerializer(ModelSerializer):
""" Credit card model serializer """
expiration_date = serializers.CharField()
card_number = serializers.CharField()
security_code = serializers.IntegerField()
# validation stuff here ...
Run Code Online (Sandbox Code Playgroud)
在我的ApiView中BookingApiView,我正在打电话给BookingSerializer.根据返回True或False的后端方法,我想强制或不强制信用卡字段.我怎样才能做到这一点?谢谢.
您可以修改__init__方法中的字段BookingSerializer.初始化后,可以访问字段self.fields
class BookingSerializer(Serializer):
reservation_history_id = serializers.IntegerField()
credit_card = 'api.v1.serializer.AddCreditCardSerializer()'
save_credit_card = serializers.BooleanField()
promo_code = serializers.BooleanField(required=False)
def __init__(self, *args, **kwargs):
# initialize fields
super(BookingSerializer, self).__init__(*args, **kwargs)
# now modify the creditcard field
self.fields['credit_card'].required = yourBackendMethod()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1838 次 |
| 最近记录: |