Django: Сохранение нескольких форм из одного представления

Я просмотрел множество ответов, но не смог продвинуться. Код можно найти здесь: https://github.com/varlenthegray/wcadmin/blob/master/customer/views.py - сейчас сосредоточен на "клиенте" и немного "стройплощадки".

Вопрос: Как получить первичный ключ сайта работы? Он перезагружается через JS, поэтому я предполагаю, что он должен быть в форме. Лучшим методом будет указать его как строку запроса в конце URL? Он не "сломан", т.е. не выдает мне никаких ошибок Django, но он также не сохраняется.

forms.py

class ViewCustomerForm(forms.ModelForm):
    next_service = forms.DateField(widget=forms.DateInput(format='%m-%d-%Y'), input_formats=['%m-%d-%Y'])
    edit_customer = forms.BooleanField(widget=forms.HiddenInput, initial=True)

    class Meta:
        model = Customer
        fields = ['company', 'title', 'first_name', 'middle_name', 'last_name', 'secondary_contact_name', 'website',
                  'email', 'main_phone', 'alternate_phone', 'fax_number', 'billing_address_1', 'billing_city',
                  'billing_state', 'billing_zip']


class ViewJobSiteForm(forms.ModelForm):
    edit_job_site = forms.BooleanField(widget=forms.HiddenInput, initial=True)
    next_service_date = forms.DateField(widget=forms.DateInput(format='%m-%d-%Y'), input_formats=['%m-%d-%Y'])

    class Meta:
        model = JobSite
        fields = ['name', 'address', 'city', 'state', 'zip', 'phone_number', 'email', 'next_service_date',
                  'active', 'access_code', 'bill_parent', 'customer', 'primary_technician', 'service_interval',
                  'requires_supporting_technician']


class EditJobSiteEquipment(forms.ModelForm):
    edit_job_site_equipment = forms.BooleanField(widget=forms.HiddenInput, initial=True)

    class Meta:
        model = JobSiteEquipment
        fields = ['id', 'tags', 'installed_on', 'edit_job_site_equipment']

views.py

@login_required
def view_customer(request, pk):
    customer = get_object_or_404(Customer, id=pk)
    job_site = JobSite.objects.filter(customer=pk).first()
    all_job_sites = JobSite.objects.filter(customer=pk)
    edit_customer = ViewCustomerForm(instance=customer, prefix='customer')
    edit_job_site = ViewJobSiteForm(instance=job_site, prefix='job')

    if request.method == 'POST':
        if 'customer-edit_customer' in request.POST:
            edit_customer = ViewCustomerForm(request.POST, instance=customer, prefix='customer')

            if edit_customer.is_valid():
                edit_customer.save()

        if 'job-edit_job_site' in request.POST:
            print("Editing Job Site")
            edit_job_site = ViewJobSiteForm(request.POST, prefix='job')
            print(request.POST)

            if edit_job_site.is_valid():
                edit_job_site.save()
                print("Saving Jobsite")

        if 'edit_job_site_equipment' in request.POST:
            job_site_equipment_line = JobSiteEquipment.objects.filter(request.POST['equipment_line_id'])
            edit_job_site_equipment = EditJobSiteEquipment(request.POST, instance=job_site_equipment_line)

            if edit_job_site_equipment.is_valid():
                edit_job_site_equipment.save()

    if job_site:
        jspk = job_site.pk
    else:
        jspk = 0

    existing_equipment = JobSiteEquipment.objects.filter(job_site=jspk)

    context = {
        'form': edit_customer,
        'form2': edit_job_site,
        'all_job_sites': all_job_sites,
        'job_site_id': jspk,
        'existing_equipment': existing_equipment,
        'all_equipment': Equipment.objects.all()
    }

    return render(request, 'customer/view_customer.html', context=context)
Вернуться на верх