니르바나
2k
2020-02-08 18:13:34 작성 2020-02-08 18:16:00 수정됨
0
121

장고에서 User외에 Profile코드를 추가 하고 있습니다. 위 로직처럼 짤 필요 없지 않나요?


https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html


from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.profile.save()
최상단의 링크의 코드를 참고해서 유저 확장하는 방법에서 OnetoOnefield로 대응시켜서 확장하는 방법을 쓰고 있습니다.

근데 post_save 이벤트 발생시 동작시킬 함수를 두개로 나눠놨는데

나눌 필요가 없지 않나요?

아래처럼 고치면 위 코드랑 정확히 똑같이 동작하지 않나요?

왜 함수를 나눠놨는지 특별한 언급도 없고 나눌 이유도 없어보여 여쭤봅니다.


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)
    instance.profile.save()



0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.