У меня есть
class MEMBERSHIP_STATUS:
PENDING = 0
DECLINED = 1
MEMBER = 2
, а модель
class Membership(models.Model):
MEMBERSHIP_STATUS = (
(MEMBERSHIP_STATUS.PENDING, _('Pending')),
(MEMBERSHIP_STATUS.DECLINED, _('Declined')),
(MEMBERSHIP_STATUS.MEMBER, _('Member')),
)
user = models.OneToOneField(User, on_delete=models.CASCADE)
status = models.IntegerField(max_length=10, choices=MEMBERSHIP_STATUS, default=MEMBERSHIP_STATUS.PENDING)
def __str__(self):
return self.user.username
сейчас, в serializers.py
, у меня есть
class MembershipSerializer(serializers.ModelSerializer):
user = UserSerializer()
family = FamilySerializer()
status = serializers.SerializerMethodField()
class Meta:
model = Membership
fields = '__all__'
def get_status(self, membership):
return membership.get_status_display()
Это всегда возвращается 0 , даже если я ожидаю, что он вернет дисплей. Решение, которое я нашел:
class MEMBERSHIP_STATUS:
PENDING = '0'
DECLINED = '1'
MEMBER = '2'
Изменение целых чисел на строки, похоже, работает, но я не понимаю, почему. Любое объяснение?