我使用peewee作爲ORM創建API,我需要將peewee模型對象轉換爲JSON對象以發送給用戶的功能。有誰知道這樣做的好方法嗎?Peewee model to JSON
回答
你可以做這樣的事情:
class MyModel(peewee.Model):
def __str__(self):
r = {}
for k in self._data.keys():
try:
r[k] = str(getattr(self, k))
except:
r[k] = json.dumps(getattr(self, k))
return str(r)
class User(MyModel):
email = CharField()
status = CharField(default="enabled")
firstname = CharField()
lastname = CharField()
class Meta:
database = db
Peewee在playhouse.shortcuts
擴展模塊中有model_to_dict
和dict_to_model
助手。
- http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#model_to_dict
- http://docs.peewee-orm.com/en/latest/peewee/playhouse.html#dict_to_model
如下,您可以用這些:
from playhouse.shortcuts import model_to_dict, dict_to_model
user_obj = User.select().where(User.username == 'charlie').get()
json_data = json.dumps(model_to_dict(user_obj))
還要注意的是model_to_dict()
可以通過相關的模型遞歸,包括背參考模型,並排除某些字段被序列化。
也,你可以得到的模型作爲一個字典,然後轉換與正確的字段類型(布爾,整數,浮點等),以JSON:
import peewee
import json
from bson import json_util
from datetime import datetime
class User(peewee.Model):
email = CharField()
status = BooleanField(default=True)
firstname = CharField()
lastname = CharField()
age = IntegerField()
created = DateTimeField(default=datetime.now())
class Meta:
database = db
user = User.select().dicts().get()
print json.dumps(user, default=json_util.default)
如果用戶模型具有'created = DateTimeField()',那麼json.dumps(用戶)會抱怨datetime.datetime實例不是JSON可序列化的。在這種情況下,我可以用datetime字段做什麼? –
@Roland試試從[這個答案](http://stackoverflow.com/a/11875813/1270607)解決方案: 'from bson import json_util' 'print json.dumps(user,default = json_util.default)' – kiba
問題是我沒有使用mongodb。儘管嘗試使用python builtin bson,我得到了類似「{」born「:{」$ date「:1399579518000},」name「:」John Smith「}''的東西。並試圖使用這個:https://pypi.python.org/pypi/bson/0.3.3崩潰的應用程序。謝謝你的提示。 –
- 1. json to geoDjango model
- 2. select2 AJAX'd to model,configuration
- 3. convert model to viewmodel
- 4. Databind to DataTemplate.IsSelected to View Model
- 5. Cakephp Containable not attached to Model
- 6. binding ng-model to ionic popover
- 7. Form :: model for one-to-one relationship
- 8. var javascript to asp.net MVC model
- 9. MVC Model not binding to HTTPPost action
- 10. Peewee Model關鍵字不能作爲更新中的表達式
- 11. Json to Jquery DataTable
- 12. 模型提交不能在peewee中命名爲'model'?
- 13. Peewee KeyError:'我'
- 14. android json to listview
- 15. PDOStatement to json
- 16. SOAPpy resuit to JSON
- 17. Giantbomb API to JSON
- 18. Decimal to JSON
- 19. Multimap to JSON
- 20. Collada to JSON
- 21. Java MAP to JSON
- 22. XDocument to JSON,JsonProperties
- 23. nHibernate to Json
- 24. DataTable to JSON
- 25. jquery json to string?
- 26. three.js json loadmanager model not displayed
- 27. 將JSON綁定到Model C#
- 28. TTL with peewee
- 29. Backbone to JSON不會退貨
- 30. 在Peewee
請考慮更改最佳答案。看看票... – coleifer