
Django User Modelini Genişletme
Merhabalar, Django bize default olarak bir User modeli sunar. Bu makalede, bu user modele nasıl ekstra özellikler ekleyebiliriz onlara bakıcağız.
User Modelimize şunları ekliyelim;
- Puan bölümü
- Yetki bölümü
models.py içerisine girip, sırasıyla şu işlemleri yapalım.
- User modelini import edelim.
1 |
from django.contrib.auth.models import User |
- Rutbe isimlerini belirliyelim.
1 2 3 4 5 6 7 |
Rutbeler = ( ('Aday', 'Aday'), ('Çırak', 'Çırak'), ('Kalfa', 'Kalfa'), ('Usta', 'Usta'), ('Büyük Usta', 'Büyük Usta'), ) |
- Şimdi, user modelini ezelim.
1 2 3 4 |
class NewUserModel(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) Puan = models.IntegerField(default=0) Rutbe = models.CharField(max_length=25,choices=Rutbeler,default='Aday') |
Sonuç olarak, models.py şöyle olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
from django.db import models #User Modeli from django.contrib.auth.models import User #Rütbe isimleri Rutbeler = ( ('Aday', 'Aday'), ('Çırak', 'Çırak'), ('Kalfa', 'Kalfa'), ('Usta', 'Usta'), ('Büyük Usta', 'Büyük Usta'), ) class NewUserModel(models.Model): #User modeline eriştik. user = models.OneToOneField(User, on_delete=models.CASCADE) #Puan adında Integer alan oluşturduk ve default değerini "0" yaptık. Puan = models.IntegerField(default=0) #Rütbe adında alan oluşturduk ve yukarda belirlediğimiz rütbe isimlerini "choices" ile yolladık. Rutbe = models.CharField(max_length=25,choices=Rutbeler,default='Aday') class Meta: #Ayar bölümünde gözüken isim verbose_name = "Kullanıcı Ayarları" def __str__(self): #Ayar bölümünde gözüken isim return "Puan ve Rutbe Bölümü" |
Elde edeceğimiz görüntü şu şekilde olacaktır ;
admin.py adlı dosyaya girelim ve admin tarafından görünüm tarafını ayarlalıyalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
from django.contrib import admin #User Modeli from django.contrib.auth.models import User #User Admin modeli from django.contrib.auth.admin import UserAdmin as BaseUserAdmin #Bizim oluşturmuş olduğumuz model (Ezecek Model) from DerlemApp.models import NewUserModel # Register your models here. class NewUserModel_Inline(admin.StackedInline): # Hangi modelle ezicez onu belirtiyoruz. model = NewUserModel can_delete = False verbose_name_plural = 'Diğer Özellikler' # Define a new User admin # Yeni USER Modelimi burada oluşuyor aslında. class UserAdmin(BaseUserAdmin): #Mevcut modele(tasarıma) yeni özellikleri entegre ediyoruz. Bu bize admin panelde görünecektir. inlines = (NewUserModel_Inline, ) # Re-register UserAdmin #Admin paneli(mevcut özellikleri) siliyoruz. admin.site.unregister(User) #Yeni özellikleriyle kayıt ediyoruz. admin.site.register(User, UserAdmin) |
Umarım faydalı olmuştur.
Cevap yazın