概要

以下の記事で追加したモデルのビューをカスタマイズしてみます。

sort

ordering_fieldsを追加してみます。

classoqsdrueeUderfserieryageirrislenfeIneitttngtz_reuf_eoynrrof=rb_tenVi_jprtieUcekyuselslc_ruwdeat=pnpssrs(keeIsssErt=neein((f=llst)M(offr.o".U).nygduos:ko.eesbewtotlejrab_VreIrNjoi_cngoebentfsncjwaso.eteSm.Sg:sceeaee.tt"lrtg(),li(e):(a"t))le(ini#ztder=rye_nptkr"y,_pNko)n.eb)log

結果、「Filters」の表示で、user_nameのみが選択できるようになりました。

例えば、ageでソートを行うと、validation errorが返却されました。

フィルタ

classqso###frf}suerieieUerdwlllasrievitstreyareteQODS"""""""""""e""crslirhrurje=eicigglliririuhIeinro_edaaxeocttttnessds_ntzgiubrenr(axno"e"e"gne"effe_dtayrgccatn,",",eut:rio=rfecPiohtcat,,xl__eV_ibkanFF"tia"lf(nliUcetrergii,"ni,"i"adesllhenaFll,sn,eemsweadeadmitt"slxesrsskselee,"da"=eIsdittrr,sc:tn=en=eeB,t((f=fgrra="r"Mo(a(V,c,euo.U"uoak{lsdosullle"seebestdinirljreeddn_VeIrfra,"nicn_it)aetfnlui,mwsoatsoeS.Smean"eaeergF,tlr"ei)li,bl):(aaot)l)cfeikrzen,enordns-sitnanodradredrqtuoertyesptarQaumesrylPiakream`eptaegreV_asliizdea`t.ionFilter

上記により、以下のようなフィルタが可能になりました。

http://localhost:8000/user-info?filter[user_name.contains]=nakamura

idについては、exactinのみを許可しているので、以下はvalidationエラーになりました。

http://localhost:8000/user-info?filter[id.contains]=2

swagger-uiを確認してみると、filterが正しく設定されていました。

http://localhost:8000/swagger-ui/

ReadOnlyModelViewSet

これは、Django REST frameworkの機能のようですが、ReadOnlyModelViewSetを与えることで、閲覧のみに限定したビューを作成できました。

classqsouerUerdsrieeyarrsliIeinntzgfe_o=rfV_iiUceesllweadsrsseIstn=(f=Ro(e.U"aosudbesOjreneIrlcn_ytfnMsoao.Smdaeeelr"lli,V(ai)l)eiwzSeert):#

swagger-uiを確認してみると、getのみに設定されました。

まとめ

理解が不十分な点が多いですが、フィルタの実装の参考になりましたら幸いです。