我使用的是UUID而不是默认的Django增量ID。但是,现在我收到以下错误:
file "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py",
line 184, in default
raise TypeError(repr(o) + " is not JSON serializable") TypeError: UUID('4fd5a26b452b4f62991d76488c71a554') is not JSON serializable
这是我的序列化文件:
class ApplicationSerializer(serializers.ModelSerializer):
class Meta:
model = Application
fields = ("id", "created_at", "merchant_uri", "api_key",
"status", 'owner_email', 'business_type', 'full_name',
'owner_phone_number', 'marketplace_name', 'domain_url',
'support_email', 'support_phone_number', 'postal_code',
'street_address', 'current_processor',
'current_monthly_volume')
答案 0 :(得分:2)
这通常意味着您需要强制将UUID序列化为字符串,这可以使用CharField
来完成。 Django will do this by default的一些UUID字段实现,但看起来好像您正在使用的那个将返回原始UUID
对象。通过将字段设置为CharField
,这将强制将其转换为字符串。
class ApplicationSerializer(serializers.ModelSerializer):
id = serializers.CharField(read_only=True)
class Meta:
model = Application
fields = ("id", "created_at", "merchant_uri", "api_key",
"status", 'owner_email', 'business_type', 'full_name',
'owner_phone_number', 'marketplace_name', 'domain_url',
'support_email', 'support_phone_number', 'postal_code',
'street_address', 'current_processor',
'current_monthly_volume')
这会手动将其转换为字符串,并为您提供您期望的输出。
答案 1 :(得分:0)
您可以使用django-uuidfield,它会自动序列化。