[TIL_Carrotww] 63 - 22/12/01

μœ ν˜•μ„Β·2022λ…„ 12μ›” 1일
0

TIL

λͺ©λ‘ 보기
74/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 SlugRelatedField λž€?

πŸ” chating κΈ°λŠ₯ λ§Œλ“œλŠ”λ° 처음 λ³Έλ‹€
μ°Ύμ•„λ΄€λ”λ‹ˆ μ—„μ²­ κ°„νŽΈν•œ κΈ°λŠ₯이닀.
SlugRelatedField λŠ” λŒ€μƒμ˜ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ΄€κ³„μ˜ λŒ€μƒμ„ λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•  수 μžˆλ‹€.
ex)

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.SlugRelatedField(
        many=True,
        read_only=True,
        slug_field='title'
     )

    class Meta:
        model = Album
        fields = ['album_name', 'artist', 'tracks']

result

{
    'album_name': 'Dear John',
    'artist': 'Loney Dear',
    'tracks': [
        'Airport Surroundings',
        'Everything Turns to You',
        'I Was Only Going Out',
        ...
    ]
}

λ‚˜μ˜ μ½”λ“œ

class MessageSerializer(serializers.ModelSerializer):
    sender = serializers.SlugRelatedField(many=False, slug_field='username', queryset=User.objects.all())
    receiver = serializers.SlugRelatedField(many=False, slug_field='username', queryset=User.objects.all())
    class Meta:
        model = Message
        fields = ['sender', 'receiver', 'message', 'timestamp']

κ³΅μ‹λ¬Έμ„œ

🧲 django circular dependency

πŸ” django db 섀계쀑 ν•΄λ‹Ή μ—λŸ¬λ•Œλ¬Έμ— 싀행이 μ•ˆλœκ²Œ μžˆμ—ˆλ‹€. μ΄μœ λŠ” μ„œλ‘œ λ‹€λ₯Έ 파일의 modelμ—μ„œ μ„œλ‘œ import ν•˜μ˜€κΈ° λ•Œλ¬Έμ΄λ‹€.

# test1.py
import test2

print('test1')
# test2.py
import test1

μœ„ μ½”λ“œμ—μ„œ test1.pyλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ–΄λ–»κ²Œ 될까?
test1이 λ‘λ²ˆμ΄ μ°νžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€.
μ„œλ‘œ import ν•˜μ—¬ test2λ₯Ό κ°€μ Έμ˜€κ³  test2λŠ” test1을 μ‹€ν–‰μ‹œν‚€λŠ” 것이닀

ν•˜μ—¬ model 간에 μ„œλ‘œ import λ₯Ό ν•˜κ²Œ 되면 Errorκ°€ λ°œμƒν•œλ‹€.

  • ν•΄κ²° 방법
hobby = models.ForeignKey('workshops.Hobby', on_delete=models.CASCADE)

ν•œμͺ½μ—μ„œλ§Œ importλ₯Ό μˆ˜ν–‰ν•˜κ³  λ‹€λ₯Έ ν•œμͺ½μ—μ„œλŠ” μœ„μ™€ 같이
'(app_name).(table_name)' κ³Ό 같은 λ°©μ‹μœΌλ‘œ 적어주면 μ œλŒ€λ‘œ migrateκ°€ μˆ˜ν–‰λœλ‹€.

profile
Carrot_hyeong

0개의 λŒ“κΈ€