모든 과제가 쉽지 않았지만 이번 CRUD 과제는 엄청 어려웠다. 이유는
1. 변수 선언과 관계를 확실히 이해하지 못했다.
2. 쿼리셋에 대한 이해가 부족하다.
3. import 연결관계를 잘 이해하지 못했다.
4. 들여쓰기나, 간단한 오타들도 많았다.
///models.py///
from django.db import models
class Actor(models.Model):
first_name = models.CharField(max_length=45)
last_name = models.CharField(max_length=45)
date_of_birth = models.DateField(auto_now=False,auto_now_add=False)
movie = models.ManyToManyField("Movie", through="MovieActor", related_name="actors_movie")
class Meta:
db_table = "actors"
class Movie(models.Model):
title = models.CharField(max_length=45)
release_date = models.DateField(auto_now=False,auto_now_add=False)
running_time = models.IntegerField()
actor = models.ManyToManyField("Actor", through="MovieActor", related_name="actors_movie")
class Meta:
db_table = "movies"
class MovieActor(models.Model):
actor = models.ForeignKey("Actor", on_delete=models.CASCADE)
movie = models.ForeignKey("Movie", on_delete=models.CASCADE)
class Meta:
db_table = "actors_movie"
///views.py///
import json
from django.http import JsonResponse
from django.views import View
from starring.models import Movie , Actor
class MovieView(View):
def post(self,request):
data = json.loads(request.body)
Movie.objects.create(
title = data["title"],
release_date = data["release_date"],
running_time = data["running_time"]
)
return JsonResponse({"massage":"created"} , status=201 )
def get(self,request):
movies = Movie.objects.all()
movie_list = []
for movie in movies:
films = movie.actor.all()
film_list = []
for film in films:
film_list.append({
"actor" : film.first_name + film.last_name
})
movie_list.append({
"title" : movie.title,
"running_time" : movie.running_time,
"actor" : film_list
})
return JsonResponse({"RESULT":movie_list}, status=200)
class ActorView(View):
def get(self, request):
actors = Actor.objects.all()
actor_list = []
for actor in actors:
movies = actor.movie.all()
movie_list = []
for movie in movies:
movie_list.append({
"출연한 영화" : movie.title
})
actor_list.append({
"성" : actor.first_name,
"이름" : actor.last_name,
"출연작": movie_list,
})
return JsonResponse({"결과" : actor_list})
manytomanyfield에 대한 이해를 확실히 하기위해 class 를 나눠서 다시 작성해야 겠다.