2012-01-29 85 views
1

我无法在用户提交表单时获取first_name和last_name变量进行保存。这是我的代码,我需要帮助。姓氏和姓氏未保存在自定义Django_Registration表单中

Models.py

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

class MyRegistration(models.Model): 
    first_name = models.CharField(max_length = 100, null = True, unique = True) 
    last_name = models.CharField(max_length = 100, null = True, unique = True) 

def __unicode__(self): 
    return self.name 

Forms.py

from registration.forms import RegistrationForm 
from django.forms import ModelForm 
from models import MyRegistration 
from django import forms 

class MyRegistrationForm(forms.ModelForm): 
    class Meta: 
    model = MyRegistration 


RegistrationForm.base_fields.update(MyRegistrationForm.base_fields) 

class CustomRegistrationForm(RegistrationForm): 
    def save(self, profile_callback = None): 
    user = super(CustomRegistrationForm, self).save(profile_callback = None) 
    org, c = MyRegistration.objects.get_or_create(user=user, first_name = 
    self.cleaned_data['first_name'], last_name = self.cleaned_data['last_name']) 

在根urls.py

url(r'^accounts/register/$', 'registration.views.register', {'form_class':   
    CustomRegistrationForm, 'backend':'registration.backends.default.DefaultBackend'}), 

回答

1

这是一个非常奇怪的方式去做这件事,似乎有一些交叉的电线。首先,如果您希望保存一些关于用户的额外数据,则不应该通过注册模型完成 - 您应该创建一个处理额外数据的应用程序profile。 Django文档have some good suggestions on how to go about this

更重要的是,默认User对象,你更有可能再创造您的用户已经有字段first_namelast_name,所以你可以使用它们,而不是创建一个新的配置模式

相关问题