2016-03-21 16 views
0

AngularJS uygulamasından veriyi django-rest-auth kullanarak django'ya aktarmaya çalışıyorum.Temizlenen veriler modele ulaşmıyor - django rest auth

Konsolumda, verilerin doğru bir şekilde ulaştığını görebiliyorum (özellikle 'cinsiyet' ve 'yob').

Ancak "cleaned_data"-aradığı alır sonra verilerim Django kullanıcı modelinde kadar bitmez görünüyor

I (kurmak iki kullanıcı modellerini var bir stok django Kullanıcı tablodur Not- diğer bunu belirtilmektedir

django belgelerinde
+0

Formdaki hataları denetleyebilir misiniz ('print form._errors')? – mariodev

cevap

0

, yani

Verilerin bir set ile form örneği oluşturulur ve bunu valide sonra onun cleaned_data Sen here den bunun belgelerini başvurabilir

özniteliği aracılığıyla 210

, temiz verilere erişebilir.

+0

Zaten bunu denedim - başarılı olmadı – Ycon

+0

Üzgünüz, kodunuzda görmedim ve hızlı bir çözümde elimden geleni yaptım :) Neredesin? – xthestreams

0

cleaned_data doldurmak için form üzerinde form.is_valid() aramaya gerek bir kullanıcı ben models.py oluşturduğunuz tablo)

from allauth.account.adapter import DefaultAccountAdapter # refer to allauth.account.adapter 
from stashd.models import User, AccountProfile 
import datetime, json 


class MyAccountAdapter(DefaultAccountAdapter): 

    def save_user(self, request, user, form, commit=True): 

     system_account = super(StashdAccountAdapter, self).save_user(request, user, form, commit) 
     print form 
## Print form shows all the data, but the cleaned_data get's rid of it 
     data = form.cleaned_data 
     first_name = data.get('first_name') 
     username = data.get('username') 
     last_name = data.get('last_name') 
     email = data.get('email') 
     # gender = data.get('gender') 
     # yob = data.get('yob') 
     # dob = datetime.date(int(yob), 1, 1) 
     info = {} 
     # for k, v in [('first', username), ('first', first_name), ('last', last_name), ('email', email)]: 
     #  if v: 
     #   info[k] = v 
     for k, v in [('email', email)]: #,('dob',dob),('gender',gender) 
      if v: 
       info[k] = v 

     user = User(**info) 
     user.save() 

     AccountProfile(user=user, account=system_account).save() 

     return system_account 
İlgili konular