最好的方法是在您拥有组织的应用程序中创建一个文件(比如"forms.py"),并执行以下操作:
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)
然后在您的基本URL中,覆盖现有的注册URL,并将此表单添加为要使用的表单:
form organization.forms import RegistrationFormWithOrganization
url('^/registration/register$', 'registration.views.register',
{'form_class': RegistrationFormWithOrganization}),
url('^/registration/', include('registration.urls')),
请记住,Django将使用与正则表达式匹配的第一个URL,因此将匹配您的调用而不是django-registration的调用。它还会告诉registration使用您的表单而不是它自己的表单。我在这里跳过了很多验证(可能还有用户对象的派生...如果是这样,请阅读registration的源代码以查看它来自哪里),但这绝对是在页面上轻松添加一些内容的正确方法。请保留HTML标签。