Найти - Пользователи
Полная версия: Choise и связь с другим классом.
Начало » Django » Choise и связь с другим классом.
1
Denla
Всем добрый день, прошу помощи.

Делаю небольшой проект, параллельно изучая 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.

И вот я не могу понять, как их связать?
Будьте добры, подскажите в какую сторону копать?
Спасибо.
DOOMer
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
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB