У меня есть форма, которая рендерится на собственной странице шаблона 'build-project-custom.html' в приложении Django.Я пытаюсь повторить форму как всплывающее модальное на главной странице.Я продолжаю получать сообщение об ошибке:
Параметр «поле» должен содержать действительное поле Django BoundField.
Не думаю, что я вполне понимаю, как работает ModelForm в представлениях иликак они заполняются в другом представлении класса.Я хочу, чтобы пользователь мог отправить эту форму на модальной странице.Помощь очень ценится.Я довольно новичок в Python и Django, поэтому очень хотелось бы получить простое объяснение.
buildproject / models.py
class CustomProjectBuildRequest(models.Model):
CUSTOM_PROJECT_CONTACT_METHOD = (
('Email', 'Email'),
('Call', 'Call'),
('Text', 'Text'),
)
first_name = models.CharField(max_length=100, null=False, verbose_name='First Name')
last_name = models.CharField(max_length=100, null=False, verbose_name='Last Name')
email = models.EmailField(max_length=255, unique=False, verbose_name='Email')
phone_number = PhoneNumberField(null=False, blank=False, verbose_name='Phone')
created_timestamp = models.DateTimeField(auto_now_add=True, verbose_name='Requested')
updated_timestamp = models.DateTimeField(auto_now=True, verbose_name='Updated')
project_name = models.CharField(max_length=100, verbose_name='Project Name')
project_description = models.TextField(null=False, verbose_name='Description')
preferred_contact_method = models.CharField(max_length=512, choices=CUSTOM_PROJECT_CONTACT_METHOD,
verbose_name='Preferred Contact Method')
# Admin database comments for each project request created
customer_contacted = models.DateTimeField(null=True, blank=True, verbose_name='Customer Contacted')
customer_comments = models.TextField(max_length=512, null=True, blank=True, verbose_name='Admin Comments')
buildproject / forms.py
class CustomProjectBuildRequest(forms.ModelForm):
class Meta:
model = CustomProjectBuildRequest
fields = ['first_name', 'last_name', 'email', 'phone_number', 'project_name', 'project_description',
'preferred_contact_method']
class PMPIndex(ListView):
template_name = 'pmp/index.html'
model = Post
buildproject / views.py
def custom_project_build_request(request):
if request.method != 'POST':
form = CustomProjectBuildRequest()
elif request.method == 'POST':
form = CustomProjectBuildRequest(data=request.POST)
if form.is_valid():
form.save()
messages.success(request, "Form successfully submitted")
return render(request, 'build-project-custom.html', {
'form': form,
})
Домашняя страница Views.py
class PMPIndex(ListView):
template_name = 'pmp/index.html'
model = Post
def custom_project_build_request(request):
if request.method == 'POST':
form = CustomProjectBuildRequest(data=request.POST)
if form.is_valid():
form.save()
else:
form = CustomProjectBuildRequest()
return render(request, 'build-project-custom.html', {'form': form}))
Домашняя страница Модальная
<div class="modal fade" id="request-custom-project-modal" tabindex="-1" role="dialog"
aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-
{% include 'build-project-custom.html' %}
</div>
<div class=" modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>