파이썬/장고
django nested/foreign key 관계 모델까지 가져오기
글을 쓰는 개발자
2021. 6. 23. 17:17
반응형
from django.db import models
class Blog(models.Model):
title=models.CharField(max_length=25)
def __str__(self) -> str:
return self.title
class Image(models.Model):
blogId=models.ForeignKey(Blog,on_delete=models.CASCADE,related_name="images")
image=models.ImageField(default='media/제목없음.jpeg',upload_to="")
def __str__(self):
return self.image
여기에서 related_name="" 설정하는 것이 중요하다.
자세한 내용은 아래 링크 참고
https://www.django-rest-framework.org/api-guide/relations/#api-reference
Serializer relations - Django REST framework
www.django-rest-framework.org
from django.db import models
from django.db.models import fields
from rest_framework import serializers
from .models import Image, Blog
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = ['image']
class BlogSerializer(serializers.ModelSerializer):
images = ImageSerializer(many=True, read_only=True)
class Meta:
model = Blog
fields = ('id', 'title', 'images')
depth = 1
def create(self, validated_data):
images_data = self.context['request'].FILES
blog = Blog.objects.create(**validated_data)
for image_data in images_data.getlist('images'):
Image.objects.create(blogId=blog, image=image_data)
return blog
fields에 해당 이름이 존재하면 그것('images')을 참고하여 움직인다.
반응형