установить выбор в django модель - PullRequest
0 голосов
/ 17 февраля 2020
class LeaveRequestStatus(IntEnum):
    open = 0
    accepted = 1
    rejected = 2
    closed = 3

class LeaveRequest(models.Model):
    status = models.PositiveSmallIntegerField(default=LeaveRequestStatus.open)

поэтому мне пришлось внести эти изменения в два класса, но я все еще не работал

class LeaveRequestStatus(IntEnum):
    open = (0, 'Open')
    accepted = (1, 'Accepted')
    rejected = (2, 'Rejected')
    closed = (3, 'Closed')

class LeaveRequest(models.Model):
    status = models.PositiveSmallIntegerField(choices=LeaveRequestStatus, default=LeaveRequestStatus.open)

Но все равно не работает то, что я пропустил или чего не должно быть там

Ответы [ 3 ]

0 голосов
/ 17 февраля 2020
class LeaveRequestStatus(IntEnum):
    open = 0
    accepted = 1
    rejected = 2
    closed = 3

class LeaveRequest(models.Model):
    status = models.PositiveSmallIntegerField(default=LeaveRequestStatus.open.value)

Это было правильно, только не забудьте использовать .value при работе с перечислениями

0 голосов
/ 18 февраля 2020

Другой способ сделать это - использовать кортеж вместо класса

CHOICES = (
('open', ('0')),
('accepted', ('1')),
('rejected', ('2')),
('closed', ('3')),

)

Затем просто вызовите его в поле вашей модели:

status = models.PositiveSmallIntegerField(choices=CHOICES)
0 голосов
/ 17 февраля 2020

Попробуйте использовать: choices=[(x.value, x.name) for x in LeaveRequestStatus] для первого варианта вашего перечисления

...