๋ชจ๋ธ ์์ฑ์ ์๋ฃ ํ ์๋ฆฌ์ผ๋ผ์ด์ ๋ฅผ ์์ฑํ๋๋ก ํ๋ค.
์๋ฆฌ์ผ๋ผ์ด์ ์ ๊ฒฝ์ฐ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ์๋๊ฒฝ์ฐ ๋์ฒด๋ก all๋ก ์์ฑํ์์ผ๋ฉฐ, ํน์ํ ๊ฒฝ์ฐ์ธ community์ diary๋ง ์ดํด๋ณธ๋ค.
Diary
์ผ๊ธฐ์ ๊ฒฝ์ฐ ํฌ๊ฒ ์ผ๊ธฐ ๋ด์ฉ๊ณผ, ์ผ๊ธฐ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑ๋ ์์ , ์ด๋ฏธ์ง, ๊ฐ์ ๋ฐ์ดํฐ๋ก ํฌ๊ฒ ๋๋ ๋ณผ ์ ์๋ค.
์ด์ค ์์ ์ ๊ฒฝ์ฐ๋ diary๋ชจ๋ธ์์ fk๋ก ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์, ์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , ์ผ๊ธฐ์ ์ฐ๊ฒฐํ๋ ๋ถ๋ถ์ ๋ฐ๋ก ๊ตฌ์ฑํ๋ค.
๋ฐ๋ผ์ ์๋ฆฌ์ผ๋ผ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์์ํ๊ฒ ์ผ๊ธฐ๋ฅผ ์์ฑํ ์ ์๊ฒ ํ๊ณ , ๋ค๋ฅธ ์ฐ๊ด ๋ฐ์ดํฐ๋ only read๋ก ์ฝ์์๋ง ์๋๋ก ํ๋ DiarySerializer
2. ์ผ๊ธฐ ๋ด์ฉ์ ํ ๋๋ก ์์ ์ ์ถ์ฒํ๊ณ , ์์ -์ผ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ ์ ์๋๋ก ํ๋ DiaryMusicSerializer
DiarySerializer
class DiarySerializer(serializers.ModelSerializer):
music = MusicSerializer(required=False)
image_set = ImageSerializer(many=True, read_only=True)
emotion_set = EmotionSerializer(many=True, read_only=True)
class Meta:
model = Diary
fields = ['id','user','title','content','registered_at','last_update_at','music','is_open','image_set','emotion_set']
DiaryMusicSerializer
class DiaryMusicSerializer(serializers.ModelSerializer):
music = MusicSerializer(required=False)
class Meta:
model = Diary
fields =['id', 'user', 'content', 'music']
def update(self, instance, validated_data):
music_data = validated_data.pop('music', None)
instance = super().update(instance, validated_data)
if music_data:
music, _ = Music.objects.get_or_create(**music_data)
instance.music = music
return instance
Community
์ปค๋ฎค๋ํฐ์ ๊ฒฝ์ฐ ์๋ก ํ๋ก์ฐ๊ฐ ํ์ฉ๋ ๊ด๊ณ์ ์ ์ ์ผ๊ธฐ ์ค ๊ณต๊ฐ๋ ๊ฒ๋ค์ ์กฐํํ ์ ์๋๋ก ํ๋ค.
CommunitySerializer
class CommunitySerializer(serializers.ModelSerializer):
user = UserSerializer(required = False)
music = MusicSerializer(required=False)
image_set = ImageSerializer(many=True, read_only=True)
class Meta:
model = Diary
fields = ['id','user','title','content','music','image_set','registered_at','last_update_at', 'is_open']
์ฌ๊ธฐ์ ํ๋ก์ฐ ์ ๋ณด๊ฐ ์๋๋ฐ์? > ์ด๋ถ๋ถ์ ํ์ permissions๋ฅผ ํตํด ๊ฐ๋ฅํ๊ฒ ํ๋ค.