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