Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2020 23:14:13

Denla
Зарегистрирован: 2020-11-11
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Choise и связь с другим классом.

Всем добрый день, прошу помощи.

Делаю небольшой проект, параллельно изучая Django.

Имеем:
В models несколько class, среди которых:

class Card_Status(models.Model):
CARD_STATUS_CHOICES = (
(1, “Заведен в базу”),
(2, “Свободен”),
(3, “Активирован”),
(4, .. и т.д.)
)
status = models.CharField(max_length=19, null=True, choices=CARD_STATUS_CHOICES, default=1)

class Card_Main(models.Model):
card_main_number = models.CharField(max_length=50, unique=True, verbose_name='Номер')
card_main_date_add = models.DateTimeField(auto_now_add=True, verbose_name='Дата добавления')

card_main_status = models.ForeignKey(Card_Status, on_delete=models.CASCADE, verbose_name='Статус')

Идея заключается в том, что при создании объекта для класса Card_Main, статус по умолчанию выбирался бы на 1 ( “Заведен в базу”)
И уже дальше, когда происходят действия с объектами, изменялся их статус в рамках перечня CARD_STATUS_CHOICES.

И вот я не могу понять, как их связать?
Будьте добры, подскажите в какую сторону копать?
Спасибо.

Отредактировано Denla (Ноя. 12, 2020 16:53:16)

Офлайн

#2 Ноя. 14, 2020 00:00:29

DOOMer
От: Russia.MO.Balashikha
Зарегистрирован: 2013-01-09
Сообщения: 37
Репутация: +  9  -
Профиль   Отправить e-mail  

Choise и связь с другим классом.

class Card_Status(models.Model):
CARD_STATUS_CHOICES = (
(1, “Заведен в базу”),
(2, “Свободен”),
(3, “Активирован”),
(4, .. и т.д.)
)
status = models.CharField(max_length=19, null=True, choices=CARD_STATUS_CHOICES, default=1)
ИМХО, эта сущность лишняя в БД, если у вас набор статусов заранее предопределен и не предополагает изменений в дальнейшем.

Список статусов можно прям в тот же класс вбить, в котором хотите их использовать:

 class Card_Main(models.Model):
    CARD_STATUS_CHOICES = (
        (1, “Заведен в базу”),
        (2, “Свободен”),
        (3, “Активирован”),
        (4, ..и т.д.)
    )
    ...
    card_main_status = models.PositiveIntegerField(verbose_name="Status", choices=CARD_STATUS_CHOICES, default=1)

Если Django>=3.0, то можно использовать субклассы от models.TextChoices и models.IntegerChoices.
https://docs.djangoproject.com/en/3.1/ref/models/fields/#enumeration-types

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version