5
我有一個創建的存儲在我的模型以下列方式EMAIL_ID列表 Models.py
Django的REST框架:基於DRF <a href="http://www.django-rest-framework.org/api-guide/fields/#listfield" rel="nofollow">documentation</a>正確的方式來序列ListFields
class UserData(models.Model):
emails = models.CharField(max_length=100,blank=False)
在我serializers.py
文件
class UserSerializer(serializers.ModelSerializer):
emails = serializers.ListField(child = serializers.EmailField())
發佈數據時,drf頁面顯示預期格式的數據,即
"emails": [
"[email protected]"
],
但是,如果我使用python或任何其他客戶端查詢相同的數據。我得到的數據按以下格式
data = json.load(urllib2.urlopen("http://localhost:8000/blah/id"))
In [46]: d['emails']
Out[46]:
[u'[',
u'u',
u"'",
u'b',
u'a',
u'l',
u'@',
u'b',
u'a',
u'l',
u'.',
u'c',
u'o',
u'm',
u"'",
u']']
理想的情況下,它應該是
d['emails'] = ['[email protected]']
我不知道,究竟什麼是錯在這裏。有什麼建議麼 ?
我想過那個。在創建一對多協會方面有太多麻煩。我寧願將它存儲爲一個電子郵件ID數組。一個簡單的黑客就是用「,」(逗號)追加多個電子郵件。但我希望drf能夠將數組作爲json響應。 – Rahul
好吧,由於您使用的是django和關係數據庫,這只是正確的做事方式。但是,如果您使用的是Postgres,則可以嘗試新的[JSON字段](https://docs.djangoproject.com/en/1.9/ref/contrib/postgres/fields/#django.contrib.postgres.fields。 JSONField) – demux
DRF也非常靈活,源代碼清晰。你可以使用自定義字段來吸引各種瘋狂的特技。在任何情況下,CharField不是多郵件字段的正確選擇。閱讀本文:[模型中的Django列表字段](http://stackoverflow.com/questions/22340258/django-list-field-in-model) – demux