2013-03-08 16 views
11

Django-kayıt uygulamasını ve Django 1.5 kullanıyorum.django-kayıt uygulaması ve Django 1.5 özel kullanıcı modeli

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) 

: (Django-kayıt kullanıyorum unutmayınız) Nasıl özel kullanıcı modelinde (django yeni) oluşturmak ve kayıt sırasında ayrıca bu verileri kaydetmek?

+1

Bunu gördünüz mü? http://stackoverflow.com/questions/1072270/saving-profile-with-registration-in-django-registration – rafek

+0

@rafek Yeni özel kullanıcı modeliyle çalışıyorum (Django 1.5'te yeni) – user2054574

cevap

9

django-kaydı'nın ana çatalı şimdilik django 1.5 ile uyumlu değil. Değer

this pull request denetleyin.

  • Yama django-kayıt kodunu:

    Üç seçeneğiniz vardır. Çekme talebinden gereken değişiklikleri alabilirsiniz.

  • Zaten yamalı olan resmi olmayan bir çatal kullanın. Örneğin This one. Ana çatal sırasında güncelleme
  • bekleyin ...
+1

Güncel "trunk" u indirdim 'django-registration' uygulamasının sürümü bitbucket'ten geliyor ve Django 1.5 ile çalışıyor (uygulamayı yüklemek için 'pip' kullandığımda çalışmadı). İndirdiğim sürüm numarası: VERSION = (0, 9, 0, 'beta', 1) '. – yellowcap

+1

belki 'django-registration2'? Ben sadece 'django-registration'ı kurdum çünkü' 'yolk -V django-registration' 'Django ile uyumlu olmayan sadece' django-registration 0.8' veriyor == 1.5.1 – boldnik

4

Bu link iyi sürecini açıklar ve burada 1.0

Yukarıdaki kodda ek olarak fazladan birkaç noktalar şunlardır django-kayıt ile çalışır.

ilk isim form üzerinde değişiklikler uygun bir şablon oluşturmak görmek için 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) 

ve forms.py dosyası nihayet

class ExRegistrationForm(RegistrationForm): 
    is_human = forms.BooleanField(label = "Are you human?:") 
    firstname = forms.CharField(max_length=30) 
    lastname = forms.CharField(max_length=30) 

bu değiştirmek güncellemek için. profil

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) 
+0

Bu aslında bir Kullanıcı yaratmıyor mu? ve ExUserProfile örneği? –

+1

Evet, bu, özel kullanıcı modelinin ExUserProfile öğesini kullanıcı nesnesine ilişkilendirerek ve gerekli alanları kaydetmesiyle oluşturulur. – timberlake

0

Django kayıt 1.0 geçenlerde serbest bırakıldı aşağıdaki kodu uygulamanızda admin.py isimli bir dosya oluşturarak ve yazma yoluyla yönetici görülebilir. Sınıf tabanlı görünümler ve Django 1.0 özel kullanıcı modeli desteği ile tamamen yeniden yazıldı. docs'a bakın.