最好的方法是在您有组织文件的应用程序中创建一个文件(例如,“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 的。它还会告诉注册使用您的表单,而不是它自己的表单。我在这里跳过了很多验证(可能还有用户对象的派生......如果是这样,请阅读注册源代码以查看它的来源),但这绝对是正确的途径只需您花费最少的精力,即可在页面中添加一些内容。