turyanazizov / PythonLearning

0 stars 0 forks source link

Django - From Database To Model #5

Open samirkarimov opened 2 years ago

samirkarimov commented 2 years ago

Qeydlər

create table UserData( id SERIAL primary key, user_name varchar(100) unique, user_email varchar(100), user_reg_date DATE, isActive bool );



Burda qeyd olunan SQL cədvəlinini ekvivalenti olan Python Model classını hazırlayın və zəhmət olmasa bu cədvəldəki limitləmələrin də class daxilində reallaşdırın
turyanazizov commented 2 years ago

Qeydlər

Görüləcək işlər

create table UserData(
    id SERIAL primary key,
    user_name varchar(100) unique,
    user_email varchar(100),
    user_reg_date DATE,
    isActive bool
);

Burda qeyd olunan SQL cədvəlinini ekvivalenti olan Python Model classını hazırlayın və zəhmət olmasa bu cədvəldəki limitləmələrin də class daxilində reallaşdırın

class UserDaata(models.Model):
    username=models.CharField(max_length=100,unique=True)
    user_email=models.CharField(max_length=100)
    user_reg_data=models.DateTimeField(auto_now_add=True)
    isActive=models.BooleanField(default=False)
samirkarimov commented 2 years ago

Qeydlər

Görüləcək işlər

create table UserData(
    id SERIAL primary key,
    user_name varchar(100) unique,
    user_email varchar(100),
    user_reg_date DATE,
    isActive bool
);

Burda qeyd olunan SQL cədvəlinini ekvivalenti olan Python Model classını hazırlayın və zəhmət olmasa bu cədvəldəki limitləmələrin də class daxilində reallaşdırın

class UserDaata(models.Model):
    username=models.CharField(max_length=100,unique=True)
    user_email=models.CharField(max_length=100)
    user_reg_data=models.DateTimeField(auto_now_add=True)
    isActive=models.BooleanField(default=False)

Turyan Django modeldən istifadə etmədən class hazırlanması idi tapşırıq. Yəni models.Model classından miras almadan

turyanazizov commented 2 years ago

Qeydlər

Görüləcək işlər

create table UserData(
    id SERIAL primary key,
    user_name varchar(100) unique,
    user_email varchar(100),
    user_reg_date DATE,
    isActive bool
);

Burda qeyd olunan SQL cədvəlinini ekvivalenti olan Python Model classını hazırlayın və zəhmət olmasa bu cədvəldəki limitləmələrin də class daxilində reallaşdırın

class UserDaata(models.Model):
    username=models.CharField(max_length=100,unique=True)
    user_email=models.CharField(max_length=100)
    user_reg_data=models.DateTimeField(auto_now_add=True)
    isActive=models.BooleanField(default=False)

Turyan Django modeldən istifadə etmədən class hazırlanması idi tapşırıq. Yəni models.Model classından miras almadan

Djangonun ozelliyi zaten hazir classlari, metodlari deyilmi? Ozumuz yaziriqsa Django-u neynirik?

samirkarimov commented 2 years ago

Burda məqsəd sizin bu konsepti nə qədər düzgün başa düşdüyünüzü ölçməkdir Turyan.Yəni Djangoda bunun necə işlədiyini anlamağınız lazımdır.Onun üçün də özünüzün yaza bilməyi lazımdır. Yoxsa əzbərə Django öyrənməyin nə mənası var

turyanazizov commented 2 years ago

Burda məqsəd sizin bu konsepti nə qədər düzgün başa düşdüyünüzü ölçməkdir Turyan.Yəni Djangoda bunun necə işlədiyini anlamağınız lazımdır.Onun üçün də özünüzün yaza bilməyi lazımdır. Yoxsa əzbərə Django öyrənməyin nə mənası var

Hocam men indi neynemeliyem anlamiram. Menbe, ipucu falan nese gostersez davam ederem.

samirkarimov commented 2 years ago
class UserData:
       def __init__(self):
          id='',
          user_name='',
          user_email ='',
          user_reg_date ='',
          isActive =''

belə bir class yaradırsan və səndən tələb olunan odu ki məsələn bu classdan iki dənə obyekt yaradanda hər dəfə id dəyəri ozu aftamatik artsin sən nəsə daxil etmeden cunku database-də elədir.Daha sonra user_name üçün elə xüsusiyyət təyin etməlisən ki ora maksimum 100 xarakterlik data daxil edilə bilsin vs .. Bunun məntiqini düşünüb ona görə kod yazmalısan

turyanazizov commented 2 years ago
class UserData:
       def __init__(self):
          id='',
          user_name='',
          user_email ='',
          user_reg_date ='',
          isActive =''

belə bir class yaradırsan və səndən tələb olunan odu ki məsələn bu classdan iki dənə obyekt yaradanda hər dəfə id dəyəri ozu aftamatik artsin sən nəsə daxil etmeden cunku database-də elədir.Daha sonra user_name üçün elə xüsusiyyət təyin etməlisən ki ora maksimum 100 xarakterlik data daxil edilə bilsin vs .. Bunun məntiqini düşünüb ona görə kod yazmalısan

class UserData:
    class_counter=0
    def __init__(self,name,email,date,boolean):
        self.user_name = name,
        self.user_email = email,
        self.user_reg_date = date,
        self.isActive = boolean
        self.id= UserData.class_counter
        UserData.class_counter += 1

    def limitName(self):
        return len(self.user_name[0])

user1=UserData('Turyan','turyan@mail.ru','12.03.21','True')        
if user1.limitName()>100:
    print('Error')
    del user1
samirkarimov commented 2 years ago
class UserData:
       def __init__(self):
          id='',
          user_name='',
          user_email ='',
          user_reg_date ='',
          isActive =''

belə bir class yaradırsan və səndən tələb olunan odu ki məsələn bu classdan iki dənə obyekt yaradanda hər dəfə id dəyəri ozu aftamatik artsin sən nəsə daxil etmeden cunku database-də elədir.Daha sonra user_name üçün elə xüsusiyyət təyin etməlisən ki ora maksimum 100 xarakterlik data daxil edilə bilsin vs .. Bunun məntiqini düşünüb ona görə kod yazmalısan

Bir az irəlləmə var amma limitləmə birbaşa user1 obyektini yaradanda olmalıdır. Yəni sən ora 100 xarakterdən uzun hər hansı bir data daxil edib asagidaki if sertini yazmasan da kod run olunanda error vermelidir

turyanazizov commented 2 years ago
class UserData:
       def __init__(self):
          id='',
          user_name='',
          user_email ='',
          user_reg_date ='',
          isActive =''

belə bir class yaradırsan və səndən tələb olunan odu ki məsələn bu classdan iki dənə obyekt yaradanda hər dəfə id dəyəri ozu aftamatik artsin sən nəsə daxil etmeden cunku database-də elədir.Daha sonra user_name üçün elə xüsusiyyət təyin etməlisən ki ora maksimum 100 xarakterlik data daxil edilə bilsin vs .. Bunun məntiqini düşünüb ona görə kod yazmalısan

Bir az irəlləmə var amma limitləmə birbaşa user1 obyektini yaradanda olmalıdır. Yəni sən ora 100 xarakterdən uzun hər hansı bir data daxil edib asagidaki if sertini yazmasan da kod run olunanda error vermelidir

class UserData:
    class_counter=0
    def __init__(self,name,email,date,boolean):
        self.user_name = name,
        self.user_email = email,
        self.user_reg_date = date,
        self.isActive = boolean
        self.id= UserData.class_counter
        UserData.class_counter += 1

        if self.limitName()>100:
            raise Exception('Username exceeds the maximum allowed length of 100')

    def limitName(self):
        return len(self.user_name[0])

user1=UserData('Turyan','turyan@mail.ru','12.03.21','True')        
samirkarimov commented 2 years ago

son bir mesele date meselesi . bilirsen ki sql de date il-ay-gun formatinda daxil edilir.Bunun limitlemesini nece edebilersen onu da yaz istediyimi almis olacam 70 %

turyanazizov commented 2 years ago
class UserData:
    class_counter=0
    def __init__(self,name,email,date,boolean):
        self.user_name = name,
        self.user_email = email,
        self.user_reg_date = date,
        self.isActive = boolean
        self.id= UserData.class_counter
        UserData.class_counter += 1

        if self.limitName()>100:
            raise Exception('Username exceeds the maximum allowed length of 100')
        if self.isDate()==False:
             raise Exception('User Registration Date is Incorrect!, Example(2022-11-21)')
    def limitName(self):
        return len(self.user_name[0])

    def isDate(self):
        date=self.user_reg_date[0].split('-')
        year=date[0]
        month=date[1]
        day=date[2]
        if len(year)!=4:
            return False
        if int(month)>12 or int(month)<1:
            return False
        if int(day)>31 or int(day)<1:
            return False

user1=UserData('Turyan','turyan@mail.ru','2022-03-24','True')
samirkarimov commented 2 years ago

indi okeydi.Novbeti ders gun erzinde gelecek Turyan