Django Allauth 不保存自定义表单 [英] Django Allauth not saving custom form

查看:25
本文介绍了Django Allauth 不保存自定义表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在向注册添加字段,用户已创建并保存,但数据未到达数据库.没有自定义用户模型.附加字段转到不同的表,它是不同的模型.

I am adding fields to the signup, the user is created and saved but the data aren't reaching the db. There is no custom User model. The additional fields go to a different table, it is a different model.

settings.py

settings.py

SOCIALACCOUNT_AUTO_SIGNUP = False
ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.UserDataForm'
LOGIN_REDIRECT_URL = '/'
SOCIALACCOUNT_QUERY_EMAIL = True

SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'SCOPE': ['email'],
        'METHOD': 'js_sdk'  # instead of 'oauth2'
    }
}

models.py

from django.contrib.auth.models import User
from django.db import models
from django import forms

class UserData(models.Model):
    user = models.OneToOneField(User)

    year = models.CharField(max_length=4)
    month = models.CharField(max_length=2)
    day = models.CharField(max_length=2)
    hour = models.CharField(max_length=2)
    minute = models.CharField(max_length=2)
    sec = models.CharField(max_length=2)
    latdeg = models.CharField(max_length=2)
    latmin= models.CharField(max_length=2)
    londeg = models.CharField(max_length=2)
    lonmin= models.CharField(max_length=2)

    def __unicode__(self):
        return self.user.username

forms.py

from myapp.models import UserData
from django.contrib.auth.models import User
from django import forms
from django.forms.widgets import HiddenInput

class UserDataForm(forms.ModelForm):
    class Meta:
        model = UserData
        fields = ('year','month','day','hour','minute','sec','latdeg','latmin','londeg','lonmin')

def signup(self,request, user):
    user.username = user.username
    user.year = self.cleaned_data['year']
    user.month = self.cleaned_data['month']
    user.day = self.cleaned_data['day']
    user.hour = self.cleaned_data['hour']
    user.minute = self.cleaned_data['minute']
    user.sec = self.cleaned_data['sec']
    user.latdeg = self.cleaned_data['latdeg']
    user.latmin = self.cleaned_data['latmin']
    user.londeg = self.cleaned_data['londeg']
    user.lonmin = self.cleaned_data['lonmin']
    user.save()

推荐答案

好的,我自己解决了一会儿我用 form signup def 做了这个:

Ok, solved by myself afte a while I did this with the form signup def:

def signup(self,request,user):
    user=User.objects.get(email=request.email)
    year = request.POST.get('year', '')
    month = request.POST.get('month', '')
    day = request.POST.get('day', '')
    hour = request.POST.get('hour', '')
    minute = request.POST.get('minute', '')
    sec = request.POST.get('sec', '')
    latdeg = request.POST.get('latdeg', '')
    latmin = request.POST.get('latmin', '')
    londeg = request.POST.get('londeg', '')
    lonmin = request.POST.get('lonmin', '')
    userdata_obj = UserData(user=user,year=year, month=month, day=day, hour=hour,minute=minute, sec=sec,latdeg=latdeg,latmin=latmin,londeg=londeg,lonmin=lonmin)
    userdata_obj.save()

这篇关于Django Allauth 不保存自定义表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆