1. 程式人生 > >Django rest_framework----序列化組件

Django rest_framework----序列化組件

style color 使用 create frame spa perm == ()

生成hypermedialink

serializer.pclass BookModelSerializers(serializers.ModelSerializer):

class Meta:
        model = Book
        fields = "__all__"

    publish=serializers.HyperlinkedIdentityField(
            view_name="detailpublish", #urls.py detailpublish視圖的別名
            lookup_field="publish_id
", #book表字段名 lookup_url_kwarg="pk", #對到url裏的(?P<pk>\d+) )


視圖使用時加 context={‘request‘: request}
res=BookSerializers(ret,many=True,context={‘request‘: request})

urls.py

  url(r^publishes/(?P<pk>\d+)/$, views.PublishDetailView.as_view(),name="detailpublish"), #  View:view(request)=====APIView:dispatch()
url(r^books/(\d+)/$, views.BookDetailView.as_view(),name="detailbook"), #url(r‘^books/(\d+)/$‘, View:view), # view(request)

post請求save()時重寫create方法

因為自定制了字段

publish=serializers.CharField(source="publish.pk")
class BookModelSerializers(serializers.ModelSerializer):
    class Meta:
        model 
= Book fields = "__all__" publish=serializers.CharField(source="publish.pk") # authors=serializers.CharField(source="authors.all") # authors = serializers.SerializerMethodField() # def get_authors(self,obj): # temp=[] # for obj in obj.authors.all(): # temp.append(obj.name) # return temp def create(self, validated_data): print("validated_data",validated_data) book=Book.objects.create(title=validated_data["title"],price=validated_data["price"],pub_date=validated_data["pub_date"],publish_id=validated_data["publish"]["pk"]) book.authors.add(*validated_data["authors"]) return book

Django rest_framework----序列化組件