RestFreamwork笔记:model增加新字段后如何进行序列化

model增加新字段后如何进行序列化


1、在model里面,增加进入新的字段,并同步到数据库  >>python manage.py makemigrations

2、在SnippetSerializer 增加新字段的对应序列化

       a) 如果是直接一对一序列化,那么直接用  xxxx =  serializers.XXXXFIled(requied =false) 

       b) 如果继承自 serializers.ModelSerializer,则在 fields字段里面新增 这个字段 'xxxx'

3、在views.py里面看看是否需要做调整

model里面新增一个外键如何进行序列化


1、在model里面,增加新的外键,并同步到数据库,如下:

owner=models.ForeignKey('auth.User', related_name='snippets', verbose_name=u'创建者',default=1)

2、在SnippetSerializer对新增加的外键进行序列化

     a)如果不需要展示开User的字段,直接显示的就是user的id,不可点击,不会展开   

     b) 如果希望外键的信息可以被仔细展开,可以详细展示,那么需要增加外键model的序列器

   owner = UserSerializer()

   注意:在做的时候,因为UserSerializer的序列类放到了SnippetSerializer序列类下面,在SnippetSerializers调用UserSerializer失败

实现创建的对象和外键的关联


1、在model里面定义了外键

2、进入到该对象的序列化对象列表中,增加该外键的序列化,并将该字段增加到 fields里面

permission_classes=(permissions.IsAuthenticatedOrReadOnly)

3、进入到该对象的视图列表,SnippetList里面,增加一条记录来从request里面获取user并保存到表

defperform_create(self, serializer):

serializer.save(owner=self.request.user)

4、在User的序列器里面,也要反向关联,

snippets=serializers.PrimaryKeyRelatedField(many=True,queryset=Snippet.objects.all())

这样我们就实现了对象和外键的关联

推荐阅读更多精彩内容