Как отобразить загруженный файл pdf вместе с именем машины и номером операции на основе выбора из выпадающего списка

В этом проекте я хочу отобразить имя машины и номер операции вместе с загруженными pdf файлами на основе выбора имени машины и номера операции из выпадающего меню. Этот проект работает, но когда я добавляю и выбираю другой файл с тем же именем машины и номером операции, он отображает два pdf файла вместе с предыдущим pdf файлом с другим именем машины и номером операции, чего я не хочу. Он должен отображать имя машины и номер операции вместе с загруженным pdf файлом на основе выбора из выпадающего меню. А также, когда я загружаю другой pdf файл с тем же именем машины и номером операции, он должен отображать два pdf файла с тем же именем машины и номером операции в одной строке. Этот проект работает нормально, но мне нужны вышеупомянутые валидации. Пожалуйста, кто-нибудь может мне помочь, это будет очень полезно для меня. Пожалуйста...

views.py:

def upload(request):
    controlmachines = Controlmachine.objects.all()
    return render(request,'usermaster/upload.html',{'machines':machines})

def save_machine(request):
   if request.method == "POST":
      machine_name = request.POST.get('machinename', '')
      operation_no = request.POST.get('operationname','')
      choiced_cmachine = Controlmachine.objects.filter(machine_name=machine_name, operation_no=operation_no)
      cmachines = Controlmachine.objects.all()
      return render(request,'usermaster/upload.html',{'machines':machines,'choiced_cmachine':choiced_cmachine})

def index(request):  
    if request.method == 'POST':
        form = ControlmachineForm(request.POST, request.FILES)  
        if form.is_valid():
           model_instance = form.save()
           model_instance.save()
   else:
        form = ControlmachineForm()
    controlmachiness = Controlmachine.objects.all()
    return render(request,'usermaster/upload_file.html',{'form':form,'controlmachiness':controlmachiness})

upload.html:

<form action="{% url 'save_machine' %}" method="post">
    {% csrf_token %}
       <label for="machinename">Select Machine Name:</label>
       <select name="machinename" id="machinename">
           
           {% for machine in cmachines %}
           <option value="{{ machine.machine_name }}">{{ machine.machine_name }}</option>
           {% endfor %}
       </select>
       <br>
       <br>
       <label for="operationname">Select Operation Number:</label>
       <select id="operationname" name="operationname">
           
           {% for machine in cmachines %}
           <option value="{{ machine.operation_no }}">{{ machine.operation_no }}</option>
           {% endfor %}
           </select>
       <br>
       <br>
       <br>
       <input type="submit" value="Save">
   </form>

<tr>
    {% for choice in choiced_cmachine %}
    <td>{{choice.machine_name}}</td>
    <td>{{choice.operation_no}}</td>
    <td>
        {% for file in controlmachines %}
        <a href="/media/{{file.file1}}">view file</a>
        {% endfor %}
    </td>
    {% endfor %}
</tr>

control_uploadfile.html:

<html>
<head>
<title>Master File Upload</title>

</head>
<body>
<p><h1>Control File Upload</h1></p>
<form method="post" enctype="multipart/form-data">  
        {% csrf_token %}  
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button> <br><br>
</form>
</body>  
</html>

control_show.html:

{% extends "master/control_base.html" %}
 
{% block title %}Control File{% endblock title %}
 
{% block content %}
 <div class="col-md-12">
        <div class="table-responsive">
  <table id="bootstrapdatatable" class="table table-striped table-bordered" width="90%">
            <thead>
                <th><input type="checkbox" id="checkall" /></th>
                <th>ID</th>
                <th>Machine Name</th>
                <th>Operation Number</th>
                <th>File</th>
                <th>Delete</th>
             </thead>
   <tbody>
   {% for control in controlmachines %}  
    <tr>  
     <td><input type="checkbox" class="checkthis" /></td>
     <td>{{ control.id }}</td>  
     <td>{{ control.machine_name }}</td>  
     <td>{{ control.operation_no }}</td>  
     <td>{{ control.control_uploadfile }}</td>  
     <td><p data-placement="top" data-toggle="tooltip" title="Delete"><a href="/delete/{{ control.id }}" class="btn btn-danger btn-xs" data-title="Delete" data-toggle="modal" data-target="#delete" ><span class="glyphicon glyphicon-trash"></span></a></p></td>  
    </tr>  
   {% endfor %} 
   </tbody>
         
  </table>
        </div>
    </div>
{% endblock content %}

models.py:

class Controlmachine(models.Model):  
    machine_name = models.CharField(max_length=100)  
    operation_no = models.IntegerField()  
    control_uploadfile = models.FileField(upload_to='documents/')
  
    class Meta:  
        db_table = "controlmachine"

forms.py:

class ControlForm(forms.ModelForm):  
    class Meta:  
        model = Controlmachine 
        fields = ['machine_name', 'operation_no', 'control_uploadfile'] #https://docs.djangoproject.com/en/3.0/ref/forms/widgets/
        widgets = { 'machine_name': forms.TextInput(attrs={ 'class': 'form-control' }), 
            'operation_no': forms.TextInput(attrs={ 'class': 'form-control' }),
            'control_uploadfile': forms.ClearableFileInput(attrs={ 'class': 'form-control' }),
      }

Сделайте следующее: Здесь я добавил условие if, которое используется для связи имени машины с загруженным файлом.

<form action="{% url 'save_machine' %}" method="post">
    {% csrf_token %}
       <label for="machinename">Select Machine Name:</label>
       <select name="machinename" id="machinename">
           
           {% for machine in cmachines %}
           <option value="{{ machine.machine_name }}">{{ machine.machine_name }}</option>
           {% endfor %}
       </select>
       <br>
       <br>
       <label for="operationname">Select Operation Number:</label>
       <select id="operationname" name="operationname">
           
           {% for machine in cmachines %}
           <option value="{{ machine.operation_no }}">{{ machine.operation_no }}</option>
           {% endfor %}
           </select>
       <br>
       <br>
       <br>
       <input type="submit" value="Save">
   </form>

<tr>
    {% for choice in choiced_cmachine %}
    <td>{{choice.machine_name}}</td>
    <td>{{choice.operation_no}}</td>
    <td>
        {% for file in controlmachines %}
           {% if file == choice and file == choice %}
           <a href="/media/{{file.file1}}">view file</a>
           {% endif %}
        {% endfor %}
    </td>
    {% endfor %}
</tr>
Вернуться на верх