테이블이 다른 테이블과 관계가 없다면
이처럼 modelformset_factory를 사용하면 된다.
formset = Authorformset(request.POST)
formset instance화는 이처럼 하면 된다.
foreign key 관계인 object에서 접근할 때는
이 코드는 'Mike Royko'가 Author인 Book들 전부를 데이터베이스에서 가져와서 formset에 넣는다.
BookFormSet = inlineformset_factory(Author, Book, fields=('title',))
첫번째 매개변수는 '다대일 관계'에서 '일'에 해당하는 클래스, 두번째 매개변수는 '다'에 해당하는 클래스이다.
Book은 foreignKey로 Author를 가지고 있다.
'트리' 자료 구조로 보면 부모, 자식 순이라고 할 수도 있다. (한 노드의 부모는 오직 하나)
formset = BookFormSet(instance=author)
이 코드는 조건에 해당하는 데이터를 모두 form에 채워놓는다.
하지만 Create에서는 form이 비어있기를 바란다. 그러면 매개변수를 추가해줘야 한다.
formset = BookFormSet(queryset=Book.objects.none(), instance=author)
이제는 form에 초기값이 채워져 있지 않다.
(추가)
이럴 바에 그냥 매개변수에 아무 것도 전달 안 해줘도 문제 없을 것 같아서 해봤다.
formset = BookFormSet()
잘 작동한다. 아직까지는 queryset=Book.objects.none() 을 어디에 사용해야 하는 지 모르겠다. 현재 따라하고 있는 유튜브 튜토리얼에서는 굳이 필요 없을 거 같다.
template에서 formset 사용법
form들이 한 줄에 다닥다닥 붙어있을 것이다.
form마다 다른 줄에 위치하기를 원한다면 for문이 끝나기 전에 <hr> 태그(개행을 일으키는 태그)를 추가하면 된다.
참고 자료
https://docs.djangoproject.com/en/3.1/topics/forms/modelforms/
https://www.youtube.com/watch?v=G-Rct7Na0UQ&list=PL-51WBLyFTg2vW-_6XBoUpE7vpmoR3ztO&index=13
'django' 카테고리의 다른 글
현재 html에서 필요한 css 파일만 불러오기 (0) | 2020.12.23 |
---|---|
회원가입, 로그인, 로그아웃 (0) | 2020.12.20 |
CRUD를 위한 ModelForm (0) | 2020.12.19 |
model 관계(데이터베이스) (0) | 2020.12.18 |
model을 만들면 해줘야 하는 일 (0) | 2020.12.17 |