๐ก ๊ณผ์
post
1. ์ ๊ท ์ฃผ์ธ ๋ฑ๋ก
2. ๊ฐ์์ง ๋ฑ๋ก (์ฃผ์ธ์ ๋ณด ํ์)
get
1. ์ฃผ์ธ ๋ฆฌ์คํธ
- ์ด๋ฆ, ์ด๋ฉ์ผ, ๋์ด ํฌํจ
2. ๊ฐ์์ง ๋ฆฌ์คํธ
- ์ด๋ฆ, ๋์ด, ์ฃผ์ธ ์ด๋ฆ ํฌํจ
3. ์ฃผ์ธ ๋ฆฌ์คํธ (1๋ฒ ์ฝ๋์ ์ถ๊ฐ)
- ์ด๋ฆ, ๋์ด ํฌํจ, ํค์ฐ๋ ๊ฐ์์ง ๋ฆฌ์คํธ (์ด๋ฆ, ๋์ด ํฌํจ)
from django.db import models
class Owner(models.Model) :
name = models.CharField(max_length=45)
email = models.CharField(max_length=300)
age = models.PositiveIntegerField()
class Meta :
db_table = 'owners'
class Dog(models.Model) :
name = models.CharField(max_length=45)
age = models.PositiveIntegerField()
owner = models.ForeignKey('Owner', on_delete=models.CASCADE)
class Meta :
db_table = 'dogs'
import json
from django.http import JsonResponse
from django.views import View
from owners.models import Owner, Dog
class OwnerView(View) :
def post(self, request) :
data = json.loads(request.body)
Owner.objects.create(
name = data['name'],
email = data['email'],
age = data['age'])
return JsonResponse({'message':'created'}, status=201)
def get(self, request) :
owners = Owner.objects.all()
results = []
for owner in owners :
dogs = owner.dog_set.all().values('name', 'age')
results.append( {
'name' : owner.name,
'email' : owner.email,
'age' : owner.age,
'dog' : [dog for dog in dogs } )
return JsonResponse({'results' : results}, status = 200)
class DogView(View) :
def post(self, request) :
data = json.loads(request.body)
if not Owner.objects.filter(id=data['owner_id']).exists() :
return JsonResponse({'message' : 'owner_does_not_exist'}, status = 404 )
#Dog.objects.create() ๋ฅผ ์จ๋ ๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ ๊ฐ๋ฅ
owner = Owner.objects.get(id=data['owner_id'])
owner.dog_set.create( name = data['name'],
age = data['age'])
return JsonReponse({'message' : 'created'}, status = 201 )
def get(self, request) :
dogs = Dog.objects.all()
results = []
for dog in dogs :
results.append( {'name' : dog.name,
'age' : dog.age,
'owner' : dog.owner.name })
return JsonResponse({'results' : results}, status = 200 )
exists()
:
์ฟผ๋ฆฌ์
์ ๋ด์ฉ์ด ์์ผ๋ฉด 'True'๋ฅผ ๋ฐํ, ์์ผ๋ฉด 'False'๋ฅผ ๋ฐํํ๋ค.
get
์ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ฉด ๋ฐํ๊ฐ์ด ์ฟผ๋ฆฌ์
์ด ์๋๊ธฐ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
exists
๋ฅผ ์ฌ์ฉํ ๋ ์ฟผ๋ฆฌ์
ํํ๋ก ๋ฐํํ๋ filter
์ ์ฌ์ฉํ๋ค.
values()
: ๋์
๋๋ฆฌ ํํ์ ์ฟผ๋ฆฌ์
์ ๋ฐํํ๋ค. ์๋ต ๋ฉ์ธ์ง์ ์ถ๋ ฅํ๊ธฐ ์ํด์ ์ธํจํน์ ํด์ผํ๋ค.
#์คํจํ ์ฝ๋
for owner in Owner.objects.all() :
dogs = Dog.objects.get(id=data['owner_id']
dog_list = [dog.values('name', 'age') for dog in dogs]
#์ฑ๊ณตํ ์ฝ๋
for owner in Owner.objects.all() :
dogs= owner.dog_set.all().values('name', 'age')
dog_list = [dog for dog in dogs]
์ค์ views.py์์ ์ฝ๋๋ก ์์ฑํ ๋ list comprehension์ ์ด์ฉํด ๋ ๊ฐ๋จํ๊ฒ ์์ฑํ ์ ์๋ค. ์์ ์ฝ๋๋ ๋น๊ต๊ฐ ์ฝ๊ฒ ํ์ด์จ๋ณด์๋ค.
์์ ์ฝ๋๋ Django C.R.U.D (2) ์ ๋ ๋ค๋ฅธ ๊ณผ์ ์ธ ๋ค๋๋ค ๊ด๊ณ์ ๋ชจ๋ธ์์ ์์ ํ ์ฝ๋๋ค. ์ด ์ฝ๋๋
values()
๋ฅผ ์ด์ฉํด์ ์ ๋ฆฌํ ์ ์๋ค.for actor in actors : movie_list = [ movie for movie in actor.movie_set.all().values('id', 'title') ]