Dựa trên DRF documentation Tôi có một tạo ra một danh sách các EMAIL_ID lưu trữ trong mô hình của tôi theo cách sau Models.py
Django Nghỉ ngơi Khung: cách chính xác để serialize ListFields
class UserData(models.Model):
emails = models.CharField(max_length=100,blank=False)
Trong file serializers.py
tôi
class UserSerializer(serializers.ModelSerializer):
emails = serializers.ListField(child = serializers.EmailField())
Khi đăng dữ liệu, trang drf hiển thị dữ liệu ở định dạng mong muốn, nghĩa là
"emails": [
"[email protected]"
],
Nhưng, nếu tôi truy vấn cùng một dữ liệu bằng cách sử dụng python hoặc bất kỳ ứng dụng khách khác. Tôi lấy dữ liệu theo định dạng sau
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']']
Lý tưởng nhất, nó cần phải có được
d['emails'] = ['[email protected]']
Tôi không chắc chắn, những gì chính xác là sai ở đây. Bất kỳ đề xuất ?
Tôi đã nghĩ về điều đó. Có quá nhiều rắc rối trong việc tạo ra một đến nhiều hiệp hội. Tôi muốn nó được lưu trữ như một mảng các id email. Một cách dễ dàng là hack thêm nhiều email bằng "," (dấu phẩy). Nhưng tôi hy vọng cho drf để cung cấp cho phản ứng json như mảng. – Rahul
Vâng, vì bạn đang sử dụng django và một cơ sở dữ liệu quan hệ, đây chỉ là cách đúng đắn để làm việc. Tuy nhiên, nếu bạn đang sử dụng postgres, bạn có thể thử [JSON Field] mới (https://docs.djangoproject.com/en/1.9/ref/contrib/postgres/fields/#django.contrib.postgres.fields. JSONField) – demux
DRF cũng rất linh hoạt và mã nguồn rõ ràng. Bạn có thể kéo tất cả các loại pha nguy hiểm điên rồ bằng các trường tùy chỉnh. Trong mọi trường hợp, 'CharField' không phải là lựa chọn đúng cho một trường nhiều email. Đọc này: [Trường danh sách Django trong mô hình] (http://stackoverflow.com/questions/22340258/django-list-field-in-model) – demux