작정하고 장고(30~

진단·2022년 11월 22일

작장고

목록 보기
6/7

1. Profileapp


Profileapp 추가

  1. python manage.py startapp profileapp
  2. settings.py에 installed_app에 profileapp추가
  3. 최상위 urls.py에 path('profiles/', include('profileapp.urls')), 추가
  4. profileapp에 urls.py 추가 (app_name도 추가)

Profileapp Model 만들기

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    image = models.ImageField(upload_to='profile/', null=True)
    nickname = models.CharField(max_length=20, unique=True, null=True)
    message = models.CharField(max_length=100, null=True)
  • models.Model을 상속받음
  • user: OnetoOneField(profile과 user객체를 하나씩 연결)
  • on_delete(연결된 OneToOneFiled가 없어질 때) = models.CASCADE(profile도 없어진다): user객체를 지우면 연결된 profile도 지워짐
  • related_name = 'profile': view에서 request.user.profile.nickname와 같은 식으로 접근하기 위해
  • upload_to: 받은 사진을 서버에 저장할 때의 경로(media/profile/)
  • null = True: 비워도 된다
  • unique = True: 겹치지 않도록

ModelForm 개념

내용이 많을 때-> ModelForm(model의 내용을 그대로 form으로 만들어 준다) 사용


ModelForm 사용

app에 forms.py를 만들어 작성

class ProfileCreationForm(ModelForm):
    class Meta:
        model = Profile
        fields = ['image', 'nickname', 'message']
  • ModelForm을 상속받는다
  • Meta class를 만들어 안에 model과 fields를 지정

0개의 댓글