Ошибка значения Django в нескольких формах на одной странице

django

54 просмотра

1 ответ

У меня есть форма на один шаблон, который каждый раз, когда я нажимаю кнопку отправки, меня перенаправляют на страницу, которая выдает ошибку значения. Я пытался найти помощь в Интернете, но безуспешно, другая форма отлично работает на шаблоне, это просто форма документа. Я искал в Интернете, чтобы обрабатывать более одной формы в одном шаблоне, и наткнулся на набор кода, который вроде как структурирован. Но по какой-то странной причине я не могу заставить его работать, я попытался написать отдельное представление для моей второй формы, но безуспешно. Я все еще довольно новичок в Джанго.

def modify_land(request, pk):
    # Query Sets
    land = get_object_or_404(Land, pk=pk)
    land_use_types = LandType.objects.all()
    countries = Country.objects.all()
    province_states = ProvinceState.objects.all()
    counties = County.objects.all()
    lld_types = LLDType.objects.all()
    land_owners = LandOwner.objects.all()
    tenants = Tenant.objects.all()
    documents = Document.objects.all()
    document_types = DocumentType.objects.all()
    document_statuses = DocumentStatus.objects.all()
    partners = Partner.objects.all()
    events = Event.objects.all()
    # Forms
    doc_form = DocumentForm()
    # Modify Land
    if request.method == "POST":
        form = LandForm(request.POST, instance=land)
        if form.is_valid():
            land = form.save(commit=False)
            land.creator = request.user
            land.modified_date = timezone.now()
            land.save()
            messages.success(request, 'Object has Been Modified')
            return redirect(lands_home)
        else:
            messages.error(request, 'Object Has Not Been Modified')
    else:
        form = LandForm(instance=land)
    # Create Relationship to Document
    if request.method == "POST" and 'land_rel_doc' in request.POST:
        doc_form = DocumentForm(request.POST, request.FILES)
        if doc_form.is_valid():
            document = form.save(commit=False)
            document.creator = request.user
            document.created_date = timezone.now()
            document.save()
            messages.success(request, 'Object Has Been Created')
        else:
            messages.error(request, 'Object Has Not Been Created')
    else:
        doc_form = DocumentForm()
    return render(request,
                  'process_lands_management/modify_land.html',
                  {'form': form,
                   'doc_form': doc_form,
                   'land': land,
                   'land_use_types': land_use_types,
                   'countries': countries,
                   'province_states': province_states,
                   'counties': counties,
                   'lld_types': lld_types,
                   'land_owners': land_owners,
                   'tenants': tenants,
                   'documents': documents,
                   'document_types': document_types,
                   'document_statuses': document_statuses,
                   'partners': partners,
                   'events': events,
                   'title': 'Modify Land'})

Ошибка:

Internal Server Error: /process_lands_management/modify_land/1/
Traceback (most recent call last):
  File "/home/python/.virtualenvs/django_imax/lib/python3.4/site-packages/django/core/handlers/exception.py", line 39, in inner
    response = get_response(request)
  File "/home/python/.virtualenvs/django_imax/lib/python3.4/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
    response = self._get_response(request)
  File "/home/python/.virtualenvs/django_imax/lib/python3.4/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/python/.virtualenvs/django_imax/lib/python3.4/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/python/python/django_imax/django_imax/process_lands_management/views.py", line 114, in modify_land
    document = form.save(commit=False)
  File "/home/python/.virtualenvs/django_imax/lib/python3.4/site-packages/django/forms/models.py", line 443, in save
    'created' if self.instance._state.adding else 'changed',
ValueError: The Land could not be changed because the data didn't validate.
Автор: penguio Источник Размещён: 08.11.2019 11:02

Ответы (1)


0 плюса

Решение

Изменить строку document = form.save(commit=False)наdocument = doc_form.save(commit=False)

Автор: Sergey Gornostaev Размещён: 20.08.2016 08:18
Вопросы из категории :
32x32