解決方案-1使用CustomBooleanField
:
你也可以繼承的BooleanField
並添加功能from_db_value
返回作爲1/0
的True/False
值。
class CustomBooleanField(models.BooleanField):
def from_db_value(self, value, expression, connection, context):
if value is None:
return value
return int(value) # return 0/1
然後在您的模型中,您可以使用此自定義字段male
。
class Person(models.Model):
name = models.CharField()
male = CustomBooleanField() # use the custom field
這會給你male
價值1/0
而不是True/False
當你從數據庫中
方案2中獲得的價值使用自定義JSON編碼器:
從docs,
要使用自定義JSONEncoder子類(例如on Ë該覆蓋 default()
方法序列化附加類型),與 cls
kwarg指定它
解-3使用列表解析:
另一種選擇是使用list comprehensions.
要從True/False
轉換爲1/0
,我們會將我們e int(some_boolean_value)
。
objects_list = list(Person.objects.values())
modified_list = [{"name":x["name"], "male": int(x["male"])} for x in objects_list] # use list comprehension
json.dumps(modified_list)
只是在將'list(Person.objects.values())'(它將成爲一個dicts列表)的內容在傳遞給'json.dumps()'之前修改它的內容。 –