카테고리 만드는데 질문드립니다

model.py

class Category(models.Model):
    title = models.CharField(max_length=100)
        #admin으로만 만듦

    def __str__(self):
        return self.title


class Question(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='author_question')
    subject = models.CharField(max_length=200)
    content = models.TextField()
    create_date = models.DateTimeField()
    modify_date = models.DateTimeField(null=True, blank=True)
    voter = models.ManyToManyField(User, related_name='voter_question')
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.subject

question_views.py

@login_required(login_url='common:login')
def question_create(request):
    """
    pybo 질문등록
    """
    category_list = Category.objects.all()

    if request.method == 'POST':
        form = QuestionForm(request.POST)
        category_value = request.POST['category']
        if form.is_valid():
            question = form.save(commit=False)
            question.author = request.user  # 추가한 속성 author 적용
            question.create_date = timezone.now()
            question.category.title = "여기다 무엇을 넣어야할까요.." # category_value 를 그대로 전달해보았는데 생성이 안돼요 ㅜㅜ
            question.save()
            return redirect('pybo:index')
    else:
        form = QuestionForm()
        category_value = 'Q&A 게시판'
    context = {'form': form, 'category_list':category_list, 'category_value':category_value}
    return render(request, 'pybo/question_form.html', context)

pybo/question_form.html

Imgur

셀렉트 박스를 선택하면 제이쿼리로 인풋값의 밸류가 바뀌어 POST하는 방식을 따라했습니다 name은 category고
폼이 포스트되면 선택된 카테고리를 request.POST['category']를 하여 category_value에 저장시켰습니다
그리고 POST방식일때 질문을 작성하는 방식이여서 유효성검사후 question.category.title에 category_value를 할당시키려고

 if form.is_valid():
            question = form.save(commit=False)
            question.author = request.user  # 추가한 속성 author 적용
            question.create_date = timezone.now()
                        <-- edit start-->
            question.category.title = category_value
                        <--edit end-->
            question.save()
            return redirect('pybo:index')

를 주었으나 필드에 저장이 안되는거같아요..

+p.s./ question,category.title 말고 question.category_id에 카테고리 아이디를 입력해보니까 되는데 이건또 ㅠㅠ.. 어질어질하네요

ksh3546 885

M 2021년 3월 22일 11:32 오후

안녕하세요! 혹시 카테고리 구현 완료하셨을까요? 플라스크로 학업공유 웹사이트를 만들었는데 카테고리 기능은 어떻게 구현하는 것인지 도대체 감이 오지 않습니다ㅠ 혹시...정말 혹시 파일 공유해주실 수 있을까요? 성에 차지 않으시겠지만...기프티콘이라도 사례하겠습니다ㅠ - 정예림님, 2021년 9월 5일 9:35 오전 추천 , 대댓글
@정예림님 저도 옛날에 아무것도 모르는 상태로 구현한거라 잘모르겠지만(파이썬이랑 장고를 안쓴지 6개월정도 됐습니다) model.py에 구현한 클래스는 데이터를 가져오는 ORM이라고 하는데 하나의 카테고리(Category)는 여러개의 게시글(Question)을 달아주는 1:N관계로 클래스를 작성하시면 될것같습니다 게시글클래스에 model.ForeignKey로 카테고리클래스를 설정했는데 게시글클래스의 PK를 FK로 연결시킵니다 1:N관계기 때문에 FK는 게시글 클래스에만 달립니다 플라스크랑 장고의 orm작동방식은 저도 잘몰라서 죄송합니다! 제가 틀린부분은 박응용선생님이 답변해주신 내용과 같으니 참조가 되면 좋으실거같아요 - ksh3546님, 2021년 9월 5일 10:27 오전 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

Question에 대입하는 category는 이미 만들어진 카테고리입니다.
따라서 question.category = category 처럼 카테고리 객체를 대입하셔야 합니다.

물론 category라는 객체는 입력으로 받은 값으로 먼저 조회해야 하구요.

박응용

2021년 3월 23일 12:11 오전

감사합니다 시간이 늦어 나머지는 내일해야겠네요 조회시<Queryset ...> 에서 <>테그는 객체인가요? 아니면 템플릿테그처럼 {{ }}와 같은건가요? 21/03/23 - 해결했습니다! 감사합니다 filter는 리스트를 가져오는거였네요 - ksh3546님, M 2021년 3월 23일 10:28 오전 추천 , 대댓글