공지 카테고리 분류 하기 - 1

공지라는 것은 관리자만 쓸 수 있어야 하고 모든 사람이 잘 볼 수 있게 해야 했다.

일단 게시글의 순서를 정하는 것은 model에서 ordering할 수 있고,

view에서도 order_by를 할 수 있다.

일단 게시글 자체는 생성 순서로 해야 했다.

하지만 생성 순서 자체로 하면 공지글도 섞여버리기 때문에 차별해야 했다.

그래서 생각한 것이 trello 협업 프로젝트에서 했던 방법이 떠올랐다.

model에서 게시글을 생성할 때 번호를 부여하는 것이었다.

Document 모델에 다음과 같은 필드를 만들었다.

1
2
# 문서 순서
doc_sort = models.PositiveIntegerField(default=1)

아무것도 지정하지 않으면 1을 넣게 만들었다.

공지글이라면 0을 넣도록 view를 다음과 같이 구현했다.

1
2
3
4
5
if document_form.is_valid():
if document_form.instance.category.name == "공지":
document_form.instance.doc_sort = 0
document = document_form.save()
return redirect(document)

그리고 Document 모델에서 ordering을 해줬다.

1
2
3
4
class Meta:
# doc_sort를 우선순위로
# 생성한 날짜를 내림차순으로
ordering = ['doc_sort', '-create_date']

결과는 0으로는 잘 저장되는데 순서가 제대로 나오지 않았다.

좀 더 생각해봐야겠다.

Share