имя и фамилия не сохраняются в пользовательской форме Django_Registration - PullRequest
1 голос
/ 30 января 2012

У меня проблемы с получением переменных first_name и last_name для сохранения после того, как пользователь отправил форму.Вот мой код. Мне нужна помощь.

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 Ответ

1 голос
/ 30 января 2012

Это очень странный способ сделать это, и кажется, что есть некоторые скрещенные провода. Во-первых, если вы хотите сохранить некоторые дополнительные данные о пользователях, этого не следует делать с помощью модели регистрации - вам следует создать приложение profile, которое обрабатывает дополнительные данные. В документации django есть несколько хороших советов, как это сделать

Что еще более важно, объект User по умолчанию, который вы, скорее всего, создаете для своих пользователей, уже имеет поля для first_name и last_name, поэтому вы можете использовать их вместо создания новой модели профиля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...