GakuNin RDM Search API (`/api/v1/search/`) Investigation Memo

Investigation date: 2026-02-24 Target: GakuNin RDM (GRDM) Search API Source code: RCOSDP/RDM-osf.io (website/search/ directory) Developer guide: RCOSDP/RDM-developer-guide Note: Official documentation for the Search API could not be found. This article is an investigation record based on both the actual API behavior and the source code. Overview GakuNin RDM is a fork of OSF (Open Science Framework), and its source code is available on GitHub (RCOSDP/RDM-osf.io). The search functionality implementation is in the website/search/ directory and consists mainly of the following files. ...

February 24, 2026 · 8 min · Nakamura

Building a Django CI/CD Environment from GitHub to EC2 Using GitHub Actions (2023 Edition)

Overview I had the opportunity to build a Django CI/CD environment from GitHub to EC2 using GitHub Actions, and here are my notes. The following article was used as a reference. https://qiita.com/fffukken/items/27b0bfa712940914d3f6 I made some updates to the GitHub Actions configuration compared to the above article. GitHub Actions Configuration n o j a n o m : p p b b e u u s u : s b l b : i r s s - - - - - e h r l r l u t t n T : a _ a d n r m m e u n u w n r n r n r v S E E e n r n : s a a a p s a s i a u a u a u : E C C s c e c - t x t p s e m e t p m n p p m n p p p m n e c s & & & & & & C 2 2 t h q h o e - r y : s e s h y e : y i e : y y y e : c h s & & & & & & R _ _ e u e n g p i t : : : : t : t p : t t t : h m h E U H a s e s : y a x h h | h | h h h o c g p p d s T S O n : s : : r : o a S a o I o i R o o o d d d i y y e u _ E S d t u a n c e c n n n n u n n n e " o t t t a d K R T [ : [ b l - t t t - s s n p $ 6 S ~ h h c o E : : D u l v i i v t - t m m m l S 0 t / p o o t Y e d d n e e o u o e a m a T a a a o E 0 r < u n n i s : $ $ p e e t l r n p n r l l e n n n y C i プ l v y { { l v v u : s s s s l p l s a a a R s c ロ l m m a s $ { { o e e - i / P / i i t g g g E e t ジ a a t t { y l l l 4 o c y s o D p - s e e e T c H ェ o n n e e { s s o o a n h t e n e r . . . _ r o ク r a a m e e p p t : e h t : p i p p p K e s ト i g g \ c s c c , e c o u e n r y y y E t t 名 g e e t e r r ] s [ k n p $ n s e Y _ K > i . . l c e e m t 3 o - { d t q m m t " k e \ n p p r t t a . u $ p { e a u a i e e y y y r e s s i 9 t { y n l i k g s > y C m e t . . n , @ { t m c l r e r t h a m m s s E E v h a i e m a s e i a i t . C C ] " 3 m o t e m i t e c n k g a S 2 2 3 a n r s - e g e c k e r r E _ _ . t @ i u n r r i \ m a t C U H 1 r v x p t a e n i t R S O 0 i 4 . g s t t g g e g E E S " x p r . i _ = r u T R T ] . y a t o k n a \ n _ p t d x n e o t i K } } y h e t s y i c E } } t o $ o o Y h n p { n r o - i E s n } n v p C " } - e 2 \ v r _ e s U r i S s o E i n R o } n } @ } $ } { } E C 2 _ H O S T } - i s e c r e t _ k e y " s o u r c e < 仮 想 環 境 名 > / b i n / a c t i v a t e \ The changes made were updating the versions of actions/checkout and actions/setup-python. I also changed the pip install section to pip install -r requirements.txt. ...

July 9, 2023 · 5 min · Nakamura

django-simple-history: Recording Model Edit History in Django

Overview This is a personal note from researching how to keep edit history in Django. As shown in the following message, by default, edit history is recorded for changes made through the admin interface, but not for changes made through other interfaces. This object doesn’t have a change history. It probably wasn’t added via this admin site. django-simple-history So I tried using the following package. https://django-simple-history.readthedocs.io/en/latest/ I was able to use it without issues by following the quick start page below. ...

July 3, 2023 · 1 min · Nakamura

Implementing Partial Match Filters in Django Rest Framework (DRF)

To implement partial match filters in Django Rest Framework (DRF), it is common to use the Django filter backend. This uses the django_filters module. If you haven’t installed this module yet, you can install it with the following command: p i p i n s t a l l d j a n g o - f i l t e r Here are the general steps to achieve partial match search: ...

July 3, 2023 · 3 min · Nakamura

Getting the File Path of an Uploaded File Using Django's ModelForm

I had the opportunity to get the file path of an uploaded file using Django’s ModelForm, so I am making a note of it. Assume the following model. c l a s s f i D l o e c u = m e m n o t d ( e m l o s d . e F l i s l . e M F o i d e e l l d ) ( : u p l o a d _ t o = ' d o c u m e n t s / ' ) With the above, the path could be accessed using the following views. ...

June 20, 2023 · 3 min · Nakamura

Connecting Django with AWS OpenSearch

Overview These are notes on how to connect Django with AWS OpenSearch. The following article was helpful. https://testdriven.io/blog/django-drf-elasticsearch/ However, since the above article targets Elasticsearch, changes corresponding to OpenSearch were needed. Changes Changes for OpenSearch were needed starting from the Elasticsearch Setup section of the article. https://testdriven.io/blog/django-drf-elasticsearch/#elasticsearch-setup Specifically, the following two libraries were required. ( ( e e n n v v ) ) $ $ p p i i p p i i n n s s t t a a l l l l o d p j e a n n s g e o a - r o c p h e - n p s y e a r c h - d s l After that, by replacing django_elasticsearch_dsl with django-opensearch-dsl and elasticsearch_dsl with opensearchpy, I was able to proceed as described in the article. ...

June 19, 2023 · 19 min · Nakamura

Bulk Registration with Django REST Framework

Overview I looked into how to perform bulk registration with Django REST framework, so here are my notes. By following the article below, I was able to create an endpoint for bulk registration. https://qiita.com/Utena-lotus/items/c7bde7f663cfc4aabff1 Postman I sent the following request using Postman. As a result, I was able to perform bulk registration as shown below. Summary I hope this serves as a helpful reference.

June 17, 2023 · 1 min · Nakamura

Using JWT in Django (djangorestframework-simplejwt)

Overview I wanted to use JWT with Django, so I tried djangorestframework-jwt. https://github.com/jpadilla/django-rest-framework-jwt I followed the instructions on the following site. https://dev-yakuza.posstree.com/django/jwt/ However, when I added 'rest_framework_jwt.authentication.JSONWebTokenAuthentication', the following error occurred. I m p o r t E r r o r : c a n n o t i m p o r t n a m e ' s m a r t _ t e x t ' f r o m ' d j a n g o . u t i l s . e n c o d i n g ' Upon investigation, I found the following article. ...

June 17, 2023 · 1 min · Nakamura

Customizing Views for Custom Models in Django REST Framework JSON:API (DJA)

Overview Let’s customize the views for the model added in the following article. Sort Let’s add ordering_fields. c l a s s o q s d r u e e U d e r f s e r i e r y a g e i r r i s l e n f e I n e i t t t n g t z _ r e u f _ e o y n r r o f = r b _ t e n V i _ j p r t i e U c e k y u s e l s l c _ r u w d e a t = p n p s s r s ( k e e I s s s E r t = n e e i n ( ( f = l l s t ) M ( o f f r . o " . U ) . n y g d u o s : k o . e e s b e w t o t l e j r a b _ V r e I r N j o i _ c n g o e b e n t f s n c j w a s o . e t e S m . S g : s c e e a e e . t t " l r t g ( ) , l i ( e ) : ( a " t ) ) l e ( i n i # z t d e r = A r y e d _ n d p t e k r d " y , _ h p e N k r o ) e n . e b ) l o g As a result, only user_name became selectable in the “Filters” display. ...

June 5, 2023 · 6 min · Nakamura

Adding Custom Models to Django REST framework JSON:API (DJA)

Overview In the following article, I confirmed the basic operations of Django REST framework JSON:API (DJA). In this article, I will try adding a custom model to DJA. References I will add a UserInfo model, referencing the following article. https://tech-blog.rakus.co.jp/entry/20220329/python Steps Define the Model Add the following: # c l ユ a ー s ザ s u b a c 情 s i g r 報 U e r e e を s r t a 格 e _ h = t 納 r n _ e す I a d m d る n m a o _ f e y d a o e t ( = = l B s = a m m . s o o P m e d d o o M e e s d o l l i e d s s t l e . . i s l C D v . ) h a e D : a t S a r e m t F F a e i i l T e e l i l l I m d d n e ( ( t F v v e i e e g e r r e l b b r d o o F ( s s i v e e e e _ _ l r n n d b a a ( o m m v s e e e e = = r _ ' ' b n ユ 生 o a ー 年 s m ザ 月 e e 名 日 _ = ' ' n ' , ) a 作 m m 成 a e 日 x = 時 _ ' ' l 年 , e 齢 a n ' u g , t t n o h u _ = l n 3 l o 2 = w ) T _ r a u d e d , = u T n r i u q e u ) e = F a l s e ) # # # ユ 生 ー 年 年 ザ 月 齢 名 日 Build the Database Execute the following: ...

June 5, 2023 · 11 min · Nakamura

Trying Django REST Framework JSON:API (DJA)

Overview I had an opportunity to try Django REST framework JSON:API (DJA), so here are my notes. https://django-rest-framework-json-api.readthedocs.io/en/stable/index.html Installation Launch the example app described on the following page. https://django-rest-framework-json-api.readthedocs.io/en/stable/getting-started.html g c p s p d d d i d y o i j j j t t u p a a a d h r n n n c j o c i g g g l a n e n o o o o n 3 s - - - n g e t a a a e o - n a d d d - m v l m m m h r / l i i i t e b n n n t s e i - p t n n U m l r s - v / r i o u : f a g a n / r e c r r d s / a n t e a d e g m v i q t a r i e v u e t v t w a i a e h o t r r u r e e - d b k m s r . - e e f - c j n t _ s o s t t e e m s i x t n . n a t d - t g m i j a x s p n a p t = l g n i e e s g x = o a e - m - x j p s a s l e m o e t p n . t l - s i e a e n . p t g s i t s e / i = t d n e t j g x i a s a n n m g g p s o l - e r . e s s e t t - t f i r n a g m s e w o r k - j s o n - a p i . g i t As a result, the following screens were obtained. ...

June 5, 2023 · 4 min · Nakamura