У меня есть очень простой django view и сериализатор и база данных Postgres в сочетании с популярным пакетом dj-stripe. Dj-stripe сохраняет некоторые данные json в текстовом поле (столбец = billing_details
) в базе данных, и это выглядит так, с двойными кавычками:
{"address":{"city":null,"country":null,"line1":null,"line2":null,"postal_code":"11111","state":null},"email":null,"name":"Jenny Rosen","phone":null}
К сожалению, кажется, что-то (django? python?) преобразует его в одинарные кавычки (и добавляет несколько пробелов после двоеточий) следующим образом:
{'address': {'city': None, 'country': None, 'line1': None, 'line2': None, 'postal_code': '11111', 'state': None}
Мой взгляд очень прост:
class GetCustomerView(generics.ListAPIView):
authentication_classes = (TokenAuthentication,)
PaymentMethodSerializer
def list(self, request):
customer = Customer.objects.get(subscriber=request.user.organization_id)
cards = PaymentMethod.objects.filter(customer=customer.djstripe_id)
serializer = PaymentMethodSerializer(cards, many=True)
pprint(serializer.data)
if cards:
return Response(serializer.data)
else:
return Response('error', status=status.HTTP_400_BAD_REQUEST)`
, а мой сериализатор просттоже:
class PaymentMethodSerializer(serializers.ModelSerializer):
card = json.loads(serializers.JSONField())
billing_details = json.loads(serializers.JSONField())
class Meta:
model = PaymentMethod
fields = ( 'id', 'billing_details', 'card',)
Очевидно, что лучше всего его хранить в поле JSONB, но изменение пакета не вариант. Тем не менее, как я могу предотвратить это преобразование?