【发布时间】:2014-08-26 01:30:19
【问题描述】:
我正在尝试创建自定义字段供用户在使用 django-allauth 注册时输入。我已经提到了几篇关于此的帖子,但我无法将我的自定义表单保存到我的数据库中。我确实在我的 signup.html 页面上获得了一个组合表单,其中包含用户名、密码 1 和 2、电子邮件以及我的城市和学校的额外字段,但我无法将额外的字段保存到数据库中。我已经运行了 syncdb 并且可以在管理区域中看到我的用户配置文件表。
这个建议是我最接近答案的,但我不明白如何实现它:“你不能使用 UserProfileForm 到 allauth.SIGNUP_FORM_CLASS。你需要从 SignUpForm 扩展它并编写一个保存方法将接受新创建的用户作为唯一参数,”来自这篇文章: Custom registration form for use with django-allauth
我还尝试将这些帖子的建议整合到此表单中: Django Allauth not saving custom form How to customize user profile when using django-allauth
这是我的代码: 模型.py
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
# A required line - links a UserProfile to User.
user = models.OneToOneField(User)
# The additional attributes we wish to include.
school = models.CharField(max_length=128)
city = models.CharField(max_length=128)
def __unicode__(self):
return self.user.username
Forms.py
from django import forms
from django.contrib.auth.models import User
from myapp.models import UserProfile
from django.forms.widgets import HiddenInput
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('city', 'school')
def signup(self, request, user):
user=User.objects.get(email=request.email)
city=request.POST.get('city','')
school=request.POST.get('school','')
userprofile_obj = UserProfile(user=user,city=city,school=school)
userprofile_obj.save()
Settings.py
ACCOUNT_SIGNUP_FORM_CLASS = 'myapp.forms.UserProfileForm'
我的模板是 django-allauth 模板中的基本 Signup.html,我没有为此创建视图,尽管我尝试从 tangowithdjango 用户身份验证部分注册视图中创建一个,这给出了类似的行为(不是保存到数据库中)。
谢谢, 凯莉
【问题讨论】:
标签: python django forms django-allauth