C.R.U.D2 회고록!

sh_awtylol4·2022년 3월 15일
0

wecode 31기

목록 보기
15/24

모든 과제가 쉽지 않았지만 이번 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 를 나눠서 다시 작성해야 겠다.

profile
포기하는 그 순간이 바로 시합종료예요...

0개의 댓글