Python 基于django更新函数的多模型视图

Python 基于django更新函数的多模型视图,python,django,Python,Django,我有一个父模型和两个子模型,我创建了一个视图,将多个子模型添加到一个父模型中 但我对为所有子对象的父对象创建更新视图感到困惑 这是创建多个子项的表单 views.py 我正在共享模板,以便您了解表单的工作原理 创建_day.html {% extends 'luach/base.html' %} {% block content %} <div class='container'> <div class="jumbotron myjumbotron"

我有一个父模型和两个子模型,我创建了一个视图,将多个子模型添加到一个父模型中 但我对为所有子对象的父对象创建更新视图感到困惑

这是创建多个子项的表单 views.py

我正在共享模板,以便您了解表单的工作原理 创建_day.html

{% extends 'luach/base.html' %}
{% block content %}
<div class='container'>
    <div class="jumbotron myjumbotron">
        <div class="p-3 mb-2 bg-light text-center " style="border-radius: 10px;">
            <h1 class='title-date text'>{{mydate.hebrew_date}}</h1>
            <h4 class='english-date'>{{mydate.english_date}}</h4>
        </div>
        <label>sof zman 1</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_1" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <label>sof zman 2</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_2" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <label>sof zman tefila</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_tefila" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <br>
        <!--<label>ad image</label>
        <input type="file" id="ad_image">-->
        <br>
        <label>Images</label>
        <br>
        <div class="row">
            <div class="col">
                <input type="file" multiple>
            </div>
            <div class="col">
            </div>
        </div>
        <button type="submit" id="saveBtn" class="btn btn-primary mt-4">Save</button>
    </div>
</div>
<script>
    document.addEventListener('DOMContentLoaded', function() {
        var files = []
        FilePond.registerPlugin(FilePondPluginFileValidateSize);
        FilePond.registerPlugin(FilePondPluginFileValidateType);
        FilePond.setOptions({
            allowMultiple:true,
            maxFiles:10,
            maxFileSize: '10MB'
        })
        const inputElement = document.querySelector('input[type="file"]');
        const pond = FilePond.create( inputElement, {
            acceptedFileTypes:['image/png', 'image/jpeg','image/jpg'],
            onaddfile: (err, fileItem) => {
                if (!err) {
                files.push(fileItem.file)
                }
                console.log(files)
            },
            onremovefile: (err, fileItem) => {
                const index = files.indexOf(fileItem.file)
                if (index > -1) {
                    files.splice(index, 1)
                }
                console.log(files)
            }
        } );

        var formData = new FormData();
        $(document).on('click', '#saveBtn', function(e) {
            formData.append('length', files.length)
            formData.append('sof_zman_1', $('#sof_zman_1').val())
            formData.append('sof_zman_2', $('#sof_zman_2').val())
            formData.append('sof_zman_tefila', $('#sof_zman_tefila').val())
            formData.append('ad_image', $('#ad_image').val())
            for (var i = 0; i < files.length; i++) {
                formData.append('images' + i, files[i])
            }
            formData.append('csrfmiddlewaretoken', '{{ csrf_token }}')

            $.ajax({
                type: 'POST',
                url: '{% url "day_new" pk=mydate.pk %}',
                data: formData,
                cache: false,
                processData: false,
                contentType: false,
                enctype: 'multipart/form-data',
                success: function (){
                    //alert('The post has been created!')
                    window.location.href = "{% url 'date_detail' pk=mydate.pk %}";
                },
                error: function(xhr, errmsg, err) {
                    console.log(xhr.status + ":" + xhr.responseText)
                }
            })
        })
    })
</script>
{% endblock  %}
{%extends'luach/base.html%}
{%block content%}
{{mydate.希伯来日期}
{{mydate.english_date}
索夫曼1
索夫曼2
索夫曼·特菲拉


图像
拯救 document.addEventListener('DOMContentLoaded',function(){ var文件=[] registerPlugin(FilePondPluginFileValidateSize); registerPlugin(FilePondPluginFileValidateType); FilePond.setOptions({ allowMultiple:对, 最大文件数:10, 最大文件大小:“10MB” }) const inputElement=document.querySelector('input[type=“file”]”); const pond=FilePond.create(inputElement{ acceptedFileTypes:['image/png'、'image/jpeg'、'image/jpg'], onaddfile:(错误,fileItem)=>{ 如果(!err){ files.push(fileItem.file) } console.log(文件) }, onremovefile:(错误,fileItem)=>{ const index=files.indexOf(fileItem.file) 如果(索引>-1){ 文件.拼接(索引,1) } console.log(文件) } } ); var formData=new formData(); $(文档).on('click','#saveBtn',函数(e){ formData.append('length',files.length) append('sof#zman_1',$('sof#zman_1').val()) append('sof#zman_2',$('sof#zman_2').val()) append('sof#zman_tefila',$('sof#zman_tefila').val()) append('ad#u image',$('ad#u image').val()) 对于(var i=0;i
{% extends 'luach/base.html' %}
{% block content %}
<div class='container'>
    <div class="jumbotron myjumbotron">
        <div class="p-3 mb-2 bg-light text-center " style="border-radius: 10px;">
            <h1 class='title-date text'>{{mydate.hebrew_date}}</h1>
            <h4 class='english-date'>{{mydate.english_date}}</h4>
        </div>
        <label>sof zman 1</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_1" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <label>sof zman 2</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_2" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <label>sof zman tefila</label>
        <div class="row">
            <div class="col">
                <input type="time" id="sof_zman_tefila" class="form-control">
            </div>
            <div class="col">
            </div>
        </div>
        <br>
        <!--<label>ad image</label>
        <input type="file" id="ad_image">-->
        <br>
        <label>Images</label>
        <br>
        <div class="row">
            <div class="col">
                <input type="file" multiple>
            </div>
            <div class="col">
            </div>
        </div>
        <button type="submit" id="saveBtn" class="btn btn-primary mt-4">Save</button>
    </div>
</div>
<script>
    document.addEventListener('DOMContentLoaded', function() {
        var files = []
        FilePond.registerPlugin(FilePondPluginFileValidateSize);
        FilePond.registerPlugin(FilePondPluginFileValidateType);
        FilePond.setOptions({
            allowMultiple:true,
            maxFiles:10,
            maxFileSize: '10MB'
        })
        const inputElement = document.querySelector('input[type="file"]');
        const pond = FilePond.create( inputElement, {
            acceptedFileTypes:['image/png', 'image/jpeg','image/jpg'],
            onaddfile: (err, fileItem) => {
                if (!err) {
                files.push(fileItem.file)
                }
                console.log(files)
            },
            onremovefile: (err, fileItem) => {
                const index = files.indexOf(fileItem.file)
                if (index > -1) {
                    files.splice(index, 1)
                }
                console.log(files)
            }
        } );

        var formData = new FormData();
        $(document).on('click', '#saveBtn', function(e) {
            formData.append('length', files.length)
            formData.append('sof_zman_1', $('#sof_zman_1').val())
            formData.append('sof_zman_2', $('#sof_zman_2').val())
            formData.append('sof_zman_tefila', $('#sof_zman_tefila').val())
            formData.append('ad_image', $('#ad_image').val())
            for (var i = 0; i < files.length; i++) {
                formData.append('images' + i, files[i])
            }
            formData.append('csrfmiddlewaretoken', '{{ csrf_token }}')

            $.ajax({
                type: 'POST',
                url: '{% url "day_new" pk=mydate.pk %}',
                data: formData,
                cache: false,
                processData: false,
                contentType: false,
                enctype: 'multipart/form-data',
                success: function (){
                    //alert('The post has been created!')
                    window.location.href = "{% url 'date_detail' pk=mydate.pk %}";
                },
                error: function(xhr, errmsg, err) {
                    console.log(xhr.status + ":" + xhr.responseText)
                }
            })
        })
    })
</script>
{% endblock  %}