상세 컨텐츠

본문 제목

profileapp 시작 그리고 ModelForm

django

by 개복신 개발자 2021. 9. 22. 19:00

본문

728x90
반응형

profile 앱 생성

python manage.py startapp profile

 

settings.py에 새로 만든 앱 추가

pinterest/settings.py

profile의 model field를 정의한다.

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    #유저가 탈되하면 이도 사라짐 -->cascade
    image = models.ImageField(upload_to='profile/', null=True)
    #media root 밑에 profile이라는 경로가 생겨서 이에 저장됨
    nickname = models.CharField(max_length=20, unique=True, null=True)
    #unique 유일한 닉네임을 설정
    message = models.CharField(max_length=100, null=True)

-user 필드

OneToOneField는 유저와 이에 대응하는 프로필을 일대일로 설정하기 위해 사용하는 것이다. 

cascade는 유저가 탈퇴하면 같이 프로필 상에서도 삭제되도록 하는 코드이다

related_name은 역참조에 사용된다. 예를 들어 request.user.profile.nickname을 작성하면 profile이 related_name이므로

이 닉네임 필드를 쉽게 가져올 수 있다. 환경 변수랑 비슷한 역할??인가..


form

앞에서 이미 UserCreationForm을 사용한 적이 있다. 이를 상속받아 회원가입 폼을 만들었다.

from django import forms

from profileapp.models import Profile


class ProfileCreationForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ['image', 'nickname', 'message']

이런 식으로 form을 작성 이를 이용하는 것은 다음 챕터에서 알아보자

반응형

'django' 카테고리의 다른 글

admin  (0) 2022.03.21
prfileapp 구현 시작  (0) 2021.09.23
Decorater를 이용한 코드 간소화  (0) 2021.09.22
Authentication 인증 시스템 구축  (0) 2021.09.22
DeleteView기반 회원탈퇴 구현  (0) 2021.08.17

관련글 더보기

댓글 영역