supergravity

파이썬 - 장고 간단 ModelForm Meta 설정 방법 -Django 본문

개발중 기억해야 할만한 것들/파이썬

파이썬 - 장고 간단 ModelForm Meta 설정 방법 -Django

supergravity 2020. 6. 1. 15:25

장고를 쓰다보면 이미 만들어진

 

모델(ex.아래사진) 을 통해서 데이타 베이스에 저장을하고 관리를 한다.

model.py

from django.db import models

from django.forms import ModelForm

from django.conf import settings

 

class ExampleModel(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL) #로그인된 유저오브잭트 와의 관계를 나타낸다.

    model_pic = models.ImageField(upload_to = 'body/%Y/%m/%d/')#이미지 업로드를 나타낸다.

 

 

장고에서는 만들어진 모델을 바탕으로 폼(ps.HTM파일에서 데이터를 주고 받을떄 사용함)을 만드는 기능을 제공한다.

간단한 예시를 살펴보면

 

class ImageUploadForm(ModelForm):

    class Meta:

        model = ExampleModel

        fields = ['model_pic']

        widgets = {'user': forms.HiddenInput()}

 

model : modelform과 연결해주는 함수라고 생각할수있다. 장고에서 모델은 데이터 베이스와 장고와의 함수이다. 또한 form은 web과 장고와의 함수이다. 따라서 modelform은 데이타베이스에서 웹으로 가는 함수로 해석될수있다( ps. 함성함수 ㅎㅎ)

 

fields : web과 상호작용하는 변수를 정의하는 공간이다. 위에서는 user 변수를 빼서 적은 것을 볼수 있는데 이유는 로그인되었을때 작성을 할것이라서 그렇다. 만약에 'user'를 추가하면 어떻게 될까? 결과는 web상에서 다른 user의 사진까지 추가할수있게 된다.(ps. admin 권한을 가지고 있기 떄문!)

 

widgets : modelform은 데이터 베이스에서 web으로 가는 함수이다. 위젯은 웹에 표시되는 조건을 정의하는 공간이라고 생각을 할수있다. 현재 fields에 user가 없기떄문에 필요없는 부분이지만 교육학적 관점을 고려해서 넣어봣다.

 

 

Comments