Python 如何在序列化程序中查找元组?
我有这样的models.pyPython 如何在序列化程序中查找元组?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有这样的models.py GENDER =( ('MALE',1), ('FEMALE',2), ('OTHERS',3) ) class User(BaseModel, AbstractUser): type = models.IntegerField(choices=USER_TYPE,null=True) gender = models.IntegerField(choices=GENDER,null=True) 列出学生的Views
GENDER =(
('MALE',1),
('FEMALE',2),
('OTHERS',3)
)
class User(BaseModel, AbstractUser):
type = models.IntegerField(choices=USER_TYPE,null=True)
gender = models.IntegerField(choices=GENDER,null=True)
列出学生的Views.py如下所示
def list(self,request):
for adm in StudentAdmission.objects.all():
user = adm.student.user
tmp['user'] = UserGetSerializer(user).data
ud = UserDetail.objects.filter(user_id=user.id)
if ud:
tmp['user_detail'] = UserDetailSerializer(ud.first()).data
和serializer.py,如下所示
class UserBaseSerializer(serializers.Serializer):
first_name = serializers.CharField(max_length=120,required=True)
last_name = serializers.CharField(max_length=120,required=True)
email = serializers.EmailField(required=True)
class UserSerializer(UserBaseSerializer):
gender = serializers.IntegerField()
type = serializers.IntegerField(default=3)
class UserGetSerializer(UserBaseSerializer):
gender = serializers.SerializerMethodField()
type = serializers.IntegerField(default=3)
def get_gender(self, obj):
#Here Confusion
return {'id':obj.gender, 'value':value}
它以性别返回输出1,而不是返回男性。我想返回男性而不是1。为此,我创建了一个get_gender()函数从元组中查找并返回该对象Id的值。。
所以我的问题是如何编写get_gender()函数来查找性别元组
对不起,我希望你能理解我的问题使用model的方法:
或者只指定is作为字段的源:
class UserGetSerializer(UserBaseSerializer):
gender = serializers.CharField(source='get_gender_display')
请注意,GENDER
元组的值错误。它应该是这样的(实际值,人类可读)
:
GENDER =(
(1, 'MALE'),
(2, 'FEMALE'),
(3, 'OTHERS')
)
这是获取显示值的正确方法。然而,在他的情况下,选择是不正确的。应该是另一种方式(1,“男性”)。否则,即使使用display方法,他也会得到1。所以你也可以在回答中提到这一点。
GENDER =(
(1, 'MALE'),
(2, 'FEMALE'),
(3, 'OTHERS')
)