django ManytoManyField 값을 View에서 불러오기

조회수 1833회

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)
  • (•́ ✖ •̀)
    알 수 없는 사용자

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)
    
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)