반응형
모델에서 선택지 필드를 만들 수 있는데, 단일 선택이 아닌 다중 선택이 가능하도록 변경한 내용을 남겨두려고 한다.
https://pypi.org/project/django-multiselectfield/
파이썬의 django-multiselectfield 패키지를 사용했다.
[변경 전 코드]
from django.contrib.auth.models import User
from django.db import models
# Create your models here.
class Routine(models.Model):
days_of_week = (
(0, 'Mon'),
(1, 'Tue'),
(2, 'Wed'),
(3, 'Thu'),
(4, 'Fri'),
(5, 'Sat'),
(6, 'sun'),
)
#user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length = 200, blank=False, null=False)
created_at = models.DateTimeField(auto_now_add=True)
edit_at = models.DateTimeField(auto_now=True)
start_at = models.DateTimeField()
end_at = models.DateTimeField()
#변경 해줄 필드
days = models.Charfield(choices=days_of_week ,max_length = 1)
days 필드는 요일을 선택할 수 있는 필드인데, 현재는 단일 선택밖에 되지않는다. 이 필드를 다중 선택으로 변경해주려고 한다.
1. django-multiselectfield 패키지 설치
$ pip install django-multiselectfield
2. 코드 수정
최대 7개까지 선택이 가능하므로, max_choices = 7 , max_length=7 로 설정해주었다.
패키지를 import 하고 models.Charfields -> MultiSelectField로 변경해주었다.
from django.contrib.auth.models import User
from django.db import models
from multiselectfield import MultiSelectField
# Create your models here.
class Routine(models.Model):
days_of_week = (
(0, 'Mon'),
(1, 'Tue'),
(2, 'Wed'),
(3, 'Thu'),
(4, 'Fri'),
(5, 'Sat'),
(6, 'sun'),
)
....
# 수정한 부분
days = MultiSelectField(choices=days_of_week , max_length=7, max_choices=7)
3. 마이그레이션
모델이 변경되었기때문에 마이그레이션을 해준다음 어드민에서 확인해보면 다중 선택이 가능해진것을 확인할 수 있다.
반응형
'Today I Learned > django' 카테고리의 다른 글
장고 (django) 클래스 기반 뷰에서 믹스인 사용하기 (mixin) (0) | 2023.08.29 |
---|---|
장고 (django) get_queryset() 역할 (0) | 2023.08.29 |
(장고) ORM tutorial #4. ManyToManyField() (0) | 2023.08.21 |
(장고) ORM tutorial #3. OneToMany, ForeignKey() (0) | 2023.08.21 |
(장고) ORM tutorial #2. OneToOneField() (0) | 2023.08.21 |