django ManytoManyField 값을 View에서 불러오기


ProfileCategoryForm을 사용하여 html에서 ProfileCategory 모델 값을 POST형식으로 폼을 받아와 저장하고 있습니다. 여기서 Profile, Category 모델의 각 extra_profile_text, extra_category_text 를 view에 불러오고 싶습니다. (html template에서는 extra_profile_text, extra_category_text의 내용은 들어가 있지 않고 name의 값들만 노출됩니다.)

models.py

class Profile(models.Model):
    name = models.CharField(max_length = 255, blank = False)
    extra_profile_text = models.CharField(max_length = 50, blank = False)

class Category(models.Model):
    name = models.CharField(max_length = 50, blank = False)
    extra_category_text = models.CharField(max_length = 50, blank = False)

class ProfileCategory(models.Model):
    profile = models.ManyToManyField(Profile)
    category = models.ManyToManyField(Category)

forms.py

class ProfileCategoryForm(forms.ModelForm):

    class Meta:
        model = ProfileCategory)
        fields = ('profile', 'category',)

views.py

def task(request): 

    if request.method == "POST":
        form = ProfileCategoryForm(request.POST)

        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            # 이 영역에서 Category 클래스의 extra_category_text 값을 불러오고 싶습니다.

            post.save()
            form.save_m2m() #ManytoManyField저장.

            return redirect('somewhere')

    else:
        form = ProfileCategoryForm()

    context = {'form': form }


    return render(request, 'some_app/somewhere.html', context)
  • 2017년 12월 17일에 작성됨

조회수 108


Banner bitmango

1 답변


좋아요
1
싫어요
채택취소하기

위 코드의 의도를 잘 모르겠으나 views.py 에 아래와 같이 두 문장을 추가해주시면 되지 않을까요~?


post.save()
form.save_m2m() #ManytoManyField저장.

extra_category_texts = [category.extra_category_text for category in post.category.all()]
print(extra_category_texts)


로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close