La mejor manera sería la creación de la aplicación en la que tiene Organización un archivo (por ejemplo, "forms.py"), y hacer esto:
from registration.forms import RegistrationForm
from forms import *
from models import Organization
class RegistrationFormWithOrganization(RegistrationForm):
organization_logo = field.ImageField()
organization_name = field.CharField()
def save(self, profile_callback = None):
Organization.objects.get_or_create(user = self.cleaned_data['user'],
logo = self.cleaned_data['organization_logo'],
name = self.cleaned_data['organization_name'])
super(RegistrationFormWithOrganization, self).save(self, profile_callback)
Y luego, en sus URL de base , anular la URL existente para el registro, y añadir esta forma como su forma de usar:
form organization.forms import RegistrationFormWithOrganization
url('^/registration/register$', 'registration.views.register',
{'form_class': RegistrationFormWithOrganization}),
url('^/registration/', include('registration.urls')),
Recuerde que Django usará la primera URL que coincide con la expresión regular, por lo que coincidirá con su llamada y no django-registro de. También le dirá al registro que use su formulario, no el suyo. Me salté mucha validación aquí (y, probablemente, la derivación del objeto de usuario ... si es así, ve a leer el código fuente para ver de dónde viene), pero esta es definitivamente la ruta correcta para obtener algunas cosas en la página con un mínimo esfuerzo de su parte.
Esto no funcionaría porque (a) 'RegistrationForm' no tiene un campo' user', por lo que el 'self.cleaned_data [ 'usuario'] 'lanzará una excepción' KeyError'; (b) Necesita un objeto 'Usuario' para crear un objeto' Organización', y no lo obtendrá hasta que llame a 'RegistrationForm.save' que devuelve el objeto' user' recién creado. Por favor vea mi respuesta para una solución alternativa. –
@SimonKagwi He utilizado su respuesta, pero sigo recibiendo este error: TypeError at/accounts/register/ register() toma al menos 2 argumentos no palabras clave (1 dado) – anc1revv