Basierend auf dem DRF documentation Ich habe eine Liste von email_id erstellt in der folgenden Art und Weise in meinem Modell Models.py
Django Ruhe Framework: Richtiger Weg Listfields
class UserData(models.Model):
emails = models.CharField(max_length=100,blank=False)
In meiner serializers.py
Datei
class UserSerializer(serializers.ModelSerializer):
emails = serializers.ListField(child = serializers.EmailField())
Während die Daten veröffentlichen, die DRF-Seite die Daten im erwarteten Format zeigt, das heißt
"emails": [
"[email protected]"
],
Aber, wenn ich die gleichen Daten mit Python oder einem Rest-Client abfragen. Ich erhalte die Daten in folgendem Format
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']']
Idealerweise sollte es
gewesend['emails'] = ['[email protected]']
Ich bin nicht sicher, genau das, was hier nicht stimmt. Irgendwelche Vorschläge ?
Ich dachte darüber nach. Es gibt zu viel Aufwand beim Erstellen von einer zu vielen Assoziationen. Ich habe es lieber als ein Array von E-Mail-IDs gespeichert. Ein einfacher Hack wäre das Anhängen mehrerer E-Mails mit "," (Komma). Aber ich hoffe, dass drf JSON Antwort als Array geben wird. – Rahul
Nun, da Sie Django und eine relationale Datenbank verwenden, ist dies genau der richtige Weg, um Dinge zu tun. Wenn Sie Postgres verwenden, können Sie das neue [JSON Field] (https://docs.djangoproject.com/en/1.9/ref/contrib/postgres/fields/#django.contrib.postgres.fields) ausprobieren. JSONField) – demux
DRF ist auch sehr flexibel und der Quellcode klar. Sie können alle Arten von verrückten Stunts mit benutzerdefinierten Feldern durchführen. In jedem Fall ist ein 'CharField' nicht die richtige Wahl für ein Mehrfach-E-Mail-Feld. Lesen Sie dies: [Django-Listenfeld im Modell] (http://stackoverflow.com/questions/22340258/django-list-field-in-model) – demux