Django rest framework 序列化问题
我的模型类
class Type(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=20, blank=True, default=u'', verbose_name=u'类别')
class Subject(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=20, blank=True, default=u'', verbose_name=u'名称')
class Student(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=20, blank=True, default=u'', verbose_name=u'姓名')
subject = models.ForeignKey(to=Subject, on_delete=models.CASCADE)
type_id = models.IntegerField(default=0, blank=True, verbose_name=u'类别')
我的serializer
class SubjectSerializer(serializers.ModelSerializer):
class Meta:
model = Subject
fields = '__all__'
class TypeSerializer(serializers.ModelSerializer):
class Meta:
model = Type
fields = '__all__'
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = '__all__'
depth = 1
type = serializers.SerializerMethodField(read_only=True)
@staticmethod
def get_type(obj):
queryset = Type.objects.filter(id=obj.type_id).first()
if queryset:
return TypeSerializer(instance=queryset).data
return {}
在意义上type和subject都属于student的外键,只不过subject我先是定义在了model里,type我预留了一个id,在student序列化时,对于定义了外键的subject,可以很轻松的设置depth=1使之序列化到student中,但是对于type,有没有其他更简单的方法进行序列化,(目前我使用的SerializerMethodField进行自定义的),例如 PrimaryKeyRelatedField (不会用) 或其他方法让我直接指定一个主键就能运行的?
评论 0