Choice


  • 모델의 속성에 원하는 값들중 하나의 값을 넣고싶은 경우 속성에 Choice를 추가해주면 된다.
  • Choice의 타입은 (실제 저장될 값, 사용자에게 표시할 값) 형식으로 들어간다.
  • 사용자에게 표시할 값은 추후 템플릿에서 사용된다.

모델에 Choice 설정


  • 게시판 모델에 Choice 설정 (자유게시판, 파이썬 게시판, 자바 게시판중 하나)
CHOICES = (
        (0, '자유'),
        (1, '파이썬'),
        (2, '자바'),
    )

posttype = models.IntegerField(default=0, choices=CHOICES)

폼에 모델 속성 추가


class QuestionForm(forms.ModelForm):
    class Meta:
        model = Question
        fields = ['posttype', 'subject', 'content', 'image']
        labels = {
            'posttype': '게시판',
            'subject': '제목',
            'content': '내용',
            'image': '이미지',
        }

템플릿에 게시판 타입 Select 추가


<div class="form-group">
    <label for="posttype">게시판</label>
    <select class="form-select" name="posttype" id="id_posttype">
        <!-- choice에서 (실제값, 유저에게 보여질 내용) 지정해 주었으므로, -->
        {% for v, k in form.fields.posttype.choices %}
            <option value="{{ v }}" {% if form.fields.posttype.value == v %} selected {% endif %}>{{ k }}</option>
        {% endfor %}
    </select>
</div>
  • form.fields.posttype.choices
    • 가져오면 위에서 지정한 (실제값, 유저에게 보여질 내용) 리스트가 넘어옴
    • select의 option을 설정할 때 사용
  • select의 name과 id 속성을 맞추어서 잘 설정해 준다.
    • Bootstrap을 사용하였기 때문에 위와 같은 과정이 필요함.
    • 그냥 쓰려면 {{ form.posttype }} 써주면 된다.

'프레임워크 > Django' 카테고리의 다른 글

[ Django ] JWT(djangorestframework-simplejwt)  (0) 2021.10.15
[ Django ] JWT  (0) 2021.10.14
[ Django ] MySQL 연동  (0) 2021.09.14
[ Django ] 게시판에 Summernote 에디터 적용  (0) 2021.09.07
[Django] Rest API 및 Ajax  (0) 2021.07.25

+ Recent posts