Size: a a a

Django [ru] #STAY HOME

2020 September 01

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
Вы имеете ввиду чтобы у таблицы  специалиста и кастомера хранились phone_id и email_id?
Нет. Чтобы ты связал саму модель юзера с моделью специалиста и кастомера. То-есть должна быть связь 1к1.
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Olex
Нет. Чтобы ты связал саму модель юзера с моделью специалиста и кастомера. То-есть должна быть связь 1к1.
ROLE_CHOICES = (
   ('client', 'client'),
   ('specialist', 'specialist'),
)


class Customer(AbstractBaseUser):
   role = models.CharField(choices=ROLE_CHOICES, default=None, max_length=15)
   phone = models.CharField(validators=[phone_regex], max_length=13, blank=True, unique=True)
   email = models.EmailField(unique=True, blank=True, null=True)
   is_verified = models.BooleanField(blank=False, default=False)
   counter = models.IntegerField(default=0, blank=False)
   full_name = models.CharField(max_length=255)
   country = models.CharField(max_length=255, default='Украина')

   password = None


class Specialist(AbstractBaseUser):
   role = models.CharField(choices=ROLE_CHOICES, default=None, max_length=15)
   phone = models.CharField(validators=[phone_regex], max_length=13, blank=True, unique=True)
   email = models.EmailField(unique=True, blank=True, null=True)
   docs = models.CharField(blank=True, null=True)

   password = None


class User(models.Model):
   role = models.OneToOneField(Customer, on_delete=models.CASCADE)
   phone = models.OneToOneField(Customer, on_delete=models.CASCADE)
   email = models.OneToOneField(Customer, on_delete=models.CASCADE)

а каким образом тогда мне привязаться теперь и к Specialist?
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
ROLE_CHOICES = (
   ('client', 'client'),
   ('specialist', 'specialist'),
)


class Customer(AbstractBaseUser):
   role = models.CharField(choices=ROLE_CHOICES, default=None, max_length=15)
   phone = models.CharField(validators=[phone_regex], max_length=13, blank=True, unique=True)
   email = models.EmailField(unique=True, blank=True, null=True)
   is_verified = models.BooleanField(blank=False, default=False)
   counter = models.IntegerField(default=0, blank=False)
   full_name = models.CharField(max_length=255)
   country = models.CharField(max_length=255, default='Украина')

   password = None


class Specialist(AbstractBaseUser):
   role = models.CharField(choices=ROLE_CHOICES, default=None, max_length=15)
   phone = models.CharField(validators=[phone_regex], max_length=13, blank=True, unique=True)
   email = models.EmailField(unique=True, blank=True, null=True)
   docs = models.CharField(blank=True, null=True)

   password = None


class User(models.Model):
   role = models.OneToOneField(Customer, on_delete=models.CASCADE)
   phone = models.OneToOneField(Customer, on_delete=models.CASCADE)
   email = models.OneToOneField(Customer, on_delete=models.CASCADE)

а каким образом тогда мне привязаться теперь и к Specialist?
Боже что это за страх. Давай так. Удали ка это все. Зайди почитай о отношениях между таблицами. И следующее. Представь что есть один юзер(юзер модель) он может быть как и специалистом так и кастомером. В модели юзер сохраняешь все понял которые должны быть и в кастомное и в специалисте. А уже в кастомное и Спеце ты вписываешь поля которые только будут в этой модели.
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Olex
Боже что это за страх. Давай так. Удали ка это все. Зайди почитай о отношениях между таблицами. И следующее. Представь что есть один юзер(юзер модель) он может быть как и специалистом так и кастомером. В модели юзер сохраняешь все понял которые должны быть и в кастомное и в специалисте. А уже в кастомное и Спеце ты вписываешь поля которые только будут в этой модели.
1 юзер может или специалистом или кастомером
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
ну окей) почитаю пожалуй про relations)
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
1 юзер может или специалистом или кастомером
Это без разницы главное то что есть модель и она может иметь и то и то. Главное чтобы ты понял что их что-то объединяет.
источник

O

Olex in Django [ru] #STAY HOME
Тут в разы все проще чем может показаться. Главное просто узнать как работают отношения и как их юзать в орм джанге.
источник

O

Olex in Django [ru] #STAY HOME
И запомни что должена быть только одна модель Юзера.
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Olex
Это без разницы главное то что есть модель и она может иметь и то и то. Главное чтобы ты понял что их что-то объединяет.
ну я так понимаю что мне onetone  нужно делать с моделей Customer и Specialist к модели User
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
ну я так понимаю что мне onetone  нужно делать с моделей Customer и Specialist к модели User
+
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
аа я кажись прое** некоторый момент, спс что натолкнули на мыслю) щас попробую
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
аа я кажись прое** некоторый момент, спс что натолкнули на мыслю) щас попробую
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
таким же образом?
https://dpaste.org/6UY5
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
таким же образом?
https://dpaste.org/6UY5
Вот только про паст хотел написать) прочитай все такие о отношениях. А то это бессмысленно будет.
источник

O

Olex in Django [ru] #STAY HOME
Зайди на доку джанги
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Olex
Вот только про паст хотел написать) прочитай все такие о отношениях. А то это бессмысленно будет.
нуу в коде я провтыкал просто указать Класс куда стучаться) в OneToOne, а так судя по доке, то как раз onetone подходит
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
нуу в коде я провтыкал просто указать Класс куда стучаться) в OneToOne, а так судя по доке, то как раз onetone подходит
Ты каждое поле делаешь к 1к1. Зачем? https://docs.djangoproject.com/en/3.1/topics/db/examples/one_to_one/
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Olex
Ты каждое поле делаешь к 1к1. Зачем? https://docs.djangoproject.com/en/3.1/topics/db/examples/one_to_one/
Ну так это ж получаются поля которые будут у той и у той роли, поэтому для них и делаю oto, общие поля
источник

O

Olex in Django [ru] #STAY HOME
Boris Krutskih
Ну так это ж получаются поля которые будут у той и у той роли, поэтому для них и делаю oto, общие поля
Нет, это так не работает. Ты не понимаешь как работает бд. Зачем нужна one to one. Если с доки не понятно то посмотри видео об всех отношениях Джанго
источник

BK

Boris Krutskih in Django [ru] #STAY HOME
Понял) пойду смотреть
источник