问题
I use django-registration app and Django 1.5. How to create (new in django) custom user model and save also this data during registration (Please note that I am using django-registration):
class CustomProfile(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=255)
bank = models.CharField(max_length=255)
address = models.CharField(max_length=255)
?
回答1:
django-registration's main fork is not compatible with django 1.5 for now.
Check this pull request.
You have three options:
- Patch django-registration's code. You can get the changes needed from the pull request.
- Use an unofficial fork that is already patched. This one for example.
- Wait for an update on the main fork...
回答2:
This link explains the process well and works with django-registration 1.0
here are a few extra pointers in addition to the above code.
To update the first name change this in the models.py
def user_registered_callback(sender, user, request, **kwargs):
profile = ExUserProfile(user = user)
profile.is_human = bool(request.POST["is_human"])
user.first_name = request.POST["firstname"]
user.save()
profile.save()
user_registered.connect(user_registered_callback)
and in the forms.py file
class ExRegistrationForm(RegistrationForm):
is_human = forms.BooleanField(label = "Are you human?:")
firstname = forms.CharField(max_length=30)
lastname = forms.CharField(max_length=30)
finally to see the changes on the form create an appropriate template. The profile can be seen in the admin by creating a file called admin.py in your app and write the following code
from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from prof.models import ExUserProfile
admin.site.unregister(User)
class UserProfileInline(admin.StackedInline):
model = ExUserProfile
class UserProfileAdmin(UserAdmin):
inlines = [ UserProfileInline, ]
admin.site.register(User, UserProfileAdmin)
回答3:
Django-registration 1.0 has been released recently. It was completely rewritten to use class based views and with Django 1.0 custom user model support. Check out the docs.
来源:https://stackoverflow.com/questions/15296295/django-registration-app-and-django-1-5-custom-user-model