티스토리 뷰

반응형
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')을 참고하여 움직인다.

 

반응형

'파이썬 > 장고' 카테고리의 다른 글

django test response body 가져오기  (0) 2021.07.09
Django user 비밀번호 암호화  (0) 2021.07.06
Django kakao OAuth login 구현  (0) 2021.06.29
django simple-jwt payload 확장하기  (0) 2021.06.22
DRF IMAGE 복수 처리  (0) 2021.06.22
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함