Django ile uygulama geliştirirken kullandığımız User modelinde username, first_name, last_name, email, password, is_staff, is_active, is_superuser, last_login, date_joined alanları bulunmakta. Çoğu proje için bu alanlar bize yetsede, ek alanlara büyük ölçüde ihtiyaç duyabiliyoruz. Böyle durumlarda yine User modeli içindeki get_profile() methodu işimizi kolaylaştırmaktadır.
Bu methodu kullanabilmek için öncelikle settings.py dosyamıza aşağıdaki eklemeyi yapmamız gerekmekte:
[...]
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'projectname.users'
)
AUTH_PROFILE_MODULE = 'users.UserProfile'
users uygulama adı, UserProfile ise bu uygulama içinde tanımlanan bir veritabanı modeli adını belirtmektedir. Şimdi bu modelimizi yazalım ve ardından syncdb ile değişiklikleri veritabanımıza yansıtalım:
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
telefon = models.CharField(max_length=15)
Bu modeli kullanıcı kaydı sırasında aşağıdaki şekilde kullanabilir ve oluşan kullanıcı için bir profil oluşmasını sağlayabilirsiniz:
from projectname.users.models import UserProfile
[...]
user = User.objects.create_user(username,'',password)
user.is_staff = True
user.is_active = True
user.save()
[...]
profile = UserProfile(user=user,telefon=telefon)
profile.save()
Kullanıcı bilgilerinin düzenlenmesi işleminde ise aşağıda kod profildeki bilgilerin güncellenmesini sağlayacaktır:
profile = request.user.get_profile()
profile.telefon = telefon
profile.save()
Hiç yorum yok:
Yorum Gönder