View on GitHub

マッパー

Home

マッパー

マッパー

src/backend/api/online/mappers.py

class MovieMapper:
    def __init__(self, obj):
        self.obj = obj

    def as_dict(self):
        movie = self.obj
        genres = [GenreMapper(movie_genre.genre).as_dict() for movie_genre in movie.movie_genres.all()]

        return {
            'movie_id': movie.movie_id,
            'title': movie.title,
            'year': movie.year,
            'genres': genres,
            'imdb_id': movie.imdb_id,
            'tmdb_id': movie.tmdb_id,
        }


class GenreMapper:
    def __init__(self, obj):
        self.obj = obj

    def as_dict(self):
        genre = self.obj
        return {
            'genre_id': genre.genre_id,
            'genre_name': genre.genre_name,
        }

クエリセット API

(recsys_full) backend$ python manage.py shell
 from api.online.models import Movie, Genre
 from api.online.mappers import MovieMapper
 movie = Movie.objects.get(pk=1)
 MovieMapper(movie).as_dict()
 [Ctrl+D]

参考

  1. 横瀬明仁,『現場で使える Django の教科書《基礎編》』,2018.
    • 4.3.3 モデルオブジェクトを dict に変換する