Проблема с формой Django на объекте Model и перенаправление
Я столкнулся с 2 проблемами при создании формы в Django:
- Проблема при перенаправлении после отправки формы
- Объект модели не является итерируемым
В частности, я создаю форму обратной связи, и весь мой код выглядит следующим образом. Есть 4 файла, и я использую crispy_form
для отображения формы в html-файле. Все работает хорошо, за исключением того, что после нажатия на кнопку submit. Она не может вернуться к той же форме обратной связи с пустыми полями и выдает ошибку 'BugTypes' object is not iterable
Пожалуйста, проверьте и помогите. Спасибо!
# models.py
from django.db import models
# Create your models here.
class BugTypes(models.Model):
bugType = models.CharField(max_length=100)
def __str__(self):
return self.bugType
class UserFeedback(models.Model):
username = models.CharField(max_length=100)
problem = models.CharField(max_length=255)
bugType = models.ManyToManyField("BugTypes", related_name='userFeedBack')
feedback = models.TextField()
def __str__(self):
return self. Problem
# forms.py
from django import forms
from survey.models import UserFeedback, BugTypes
class FeedbackForm(forms.ModelForm):
username = forms.CharField(
widget = forms.TextInput(
attrs={'class': 'form-control'}
)
)
problem = forms.CharField(
widget = forms.TextInput(
attrs = {'class': 'form-control'}
)
)
bugType = forms.ModelChoiceField(
queryset = BugTypes.objects.all(),
widget = forms.Select(
attrs={'class': 'form-control'}
))
feedback = forms.CharField(
widget = forms.Textarea(
attrs = {'class': 'form-control'}
))
class Meta:
model = UserFeedback
fields = "__all__"
# views.py
from django.shortcuts import render
from django.urls import reverse
from django.views.generic.edit import CreateView
from survey.forms import FeedbackForm
from survey.models import UserFeedback
# Create your views here.
class UserFeedbackView(CreateView):
model = UserFeedback
form_class = FeedbackForm
success_url = '/survey/feedback/'
userFeedback_view = UserFeedbackView.as_view(template_name = "survey/user_feedback.html")
# urls.py
from django.urls import path
from survey.views import userFeedback_view
app_name = 'survey'
urlpatterns = [
path('feedback', view = userFeedback_view, name='userFeedback')
]