# serializers.py(第一种)
from rest_framework import serializers
from app01.models import Student
class StudentSerializers(serializers.ModelSerializer):
studentsex = serializers.SerializerMethodField(source='sex')
def get_studentsex(self, instance):
return instance.get_sex_display()
class Meta:
model = Student
fields = ('studentsex','studentname','classname')
# source='sex' 指定model中要修改的字段,
# 改变该字段返回的数据:函数定义为 : get_ + 字段名(有下划线)
def get_studentsex(self, instance):
return instance.get_sex_display()
# instance : 是当前 model 所指定的对象。(当前为 Student)
# Models(第二种 : 直接在对应的model下面定义函数)
from django.db import models
from django.contrib.auth.models import User
class Classes(models.Model):
name = models.CharField(max_length=32)
class Student(models.Model):
sex = models.IntegerField(choices = ((1,'男'),(2,'女')))
user =models.OneToOneField(User,related_name="related_user",on_delete=models.CASCADE)
owner_class = models.ForeignKey('Classes',on_delete=models.DO_NOTHING)
# def studentsex(self):
# return self.get_sex_display()
def studentname(self):
return self.user.username
def classname(self):
return self.owner_class.name
# self 指的是当前 model
# 在指定的 model 下定义指定的返回数据
# 注意:函数名不能和 字段名重复 否则会覆盖,
# source='sex' 指定model中要修改的字段, # 改变该字段返回的数据:函数定义为 : get_ + 字段名(有下划线) def get_studentsex(self, instance): return instance.get_sex_display() # instance : 是当前 model 所指定的对象。(当前为 Student)
————————————————————————————————————————
# self 指的是当前 model
# 在指定的 model 下定义指定的返回数据
# 注意:函数名不能和 字段名重复 否则会覆盖,