更新时间:2023-12-02 08:41:04
我已经找到了解决这个问题的方法,我会把它贴在这里,以防有人可以使用它.这很简单,我想.
I have figured out a solution to this problem, and I will post it here in case somebody can use it. It's pretty simple, I suppose.
步骤 1 在 models.py 中添加一个新模型,即配置文件:
Step 1 Add a new model, which will be a profile, in the models.py:
#models.py
class user_profile(models.Model):
user=models.ForeignKey(User, unique=True)
institution=models.CharField(max_length=200)
def __unicode__(self):
return u'%s %s' % (self.user, self.institution)
第 2 步创建将使用此模型的表单:
Step 2 Create the form that will use this model:
#forms.py
from registration.forms import RegistrationForm
from django.forms import ModelForm
from Test.models import user_profile
class UserRegForm(RegistrationForm):
institution=forms.CharField(max_length=200)
步骤 3 创建 ragbackend.py 并定义数据的保存方式:
Step 3 Create ragbackend.py and define how the data will be saved:
from Test.models import user_profile
from forms import *
def user_created(sender, user, request, **kwargs):
form = UserRegForm(request.POST)
data = user_profile(user=user)
data.institution = form.data["institution"]
data.save()
from registration.signals import user_registered
user_registered.connect(user_created)
步骤 4 转到 urls.py 并进行以下更改:
Step 4 Go to urls.py and make the following changes:
import regbackend
from registration.views import register
url(r'^accounts/register/$', register, {'backend': 'registration.backends.default.DefaultBackend','form_class': UserRegForm}, name='registration_register'),
(r'^accounts/', include('registration.urls')),
请注意,您必须按该顺序放置 URL.很容易理解为什么.
Note that you have to put the URLs in that order. Easy to understand why.
第 5 步 现在一切正常,但您看不到管理站点中的信息.所以你必须去 admin.py 并添加:
Step 5 Now everything works, but you cannot see the information in the admin site. So you have to go to admin.py and add:
#admin.py
from django.contrib.auth.models import User
from Test.models import user_profile
admin.site.unregister(User)
class UserProfileInline(admin.StackedInline):
model = user_profile
class UserProfileAdmin(UserAdmin):
inlines = [ UserProfileInline, ]
admin.site.register(User, UserProfileAdmin)
就是这样.不要忘记 runserver
之前的 syncdb
.我希望这会对某人有所帮助.
And that's it. Do not forget the syncdb
before runserver
. I hope this will help someone.