Django - Редактирование запроса из двух разных таблиц - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть запрос, запущенный из двух разных таблиц, но я, когда я go ввожу для редактирования запроса, я попал в контрольно-пропускной пункт; В моем собственном логе c есть контрольно-пропускной пункт о том, как работает django.

Я запускаю запрос всех устройств в указанном c месте, и это прекрасно работает. В базе данных у меня есть таблица для местоположения, таблица для устройств и таблица для обслуживания. поиск устройства по местоположению

search_device. html

{% extends "example/base.html" %}
{% block content %}
<head>
    <title>Search Devices at Locations</title>
</head>

<body>

<form action="{% url 'search_device' %}" method="POST" >
{% csrf_token %}
<table>
<tr>
    <td><b>Locations: &nbsp;&nbsp; </b></td>
    <td>
    <select name="location_name">
    {% for location in locations %} 
    <option value="{{location.location_name}}">{{location.location_name}}</option>{% endfor%}
    </select>
    </td>
    <td><input type="submit" value="Submit"/></td>
</tr>
</table>
</form>
<br>
<h3 align="left">Render Device List based on Location Choice</h3>
<table>
    <tr>
        <td><b> Devices: </b></td>      
        <td><b>License Key:</b><br>
        <td><b>Maintenance Support End Date: &nbsp;</b> <br>
        <td><b>Actions</b></td> 
    </tr>
        {% for device in devices %}
    <tr>    
        <td id="device_name">   {{device.device_name}} </td>
        <td id="license_key">   {{device.maintenance.license_key}} </td>
        <td id="maintenance_support_end_date"> {{device.maintenance.maintenance_support_end_date}} </td>
        <td><a href="{% url 'edit_device' device.id %}"><button id="edit_device">Edit Device</button></a>
        </td>
    </tr>   

{% endfor %}        
</table>

Это прекрасно работает и дает мне список всех устройств в каждом местоположении. То, что я хотел бы сделать, это обновить дату обслуживания на выбранном устройстве.

Вот такие формы :py

from django import forms
from .models import Locations, Devices, Maintenance

class LocationForm(forms.ModelForm):
    class Meta:
        model = Locations
        fields = '__all__'

class DeviceForm(forms.ModelForm):
    class Meta:
        model = Devices
        fields = ('location', 'device_name') 

class SearchDevLocForm(forms.ModelForm):
    class Meta:
        model = Locations
        fields = '__all__'

class MaintenanceForm(forms.ModelForm):

        class Meta: 
           model = Maintenance 
           fields = ('license_key', 'license_start_date', 'license_end_date', 'license_status', 'maintenance_support_end_date', 'end_of_support', 'end_of_life')


        def clean(self):                     
            cleaned_data = super(MaintenanceForm, self).clean()                           

и views.py

def edit_device(request, id):

    device_name= get_object_or_404(Devices, id=id)
    device_form = DeviceForm(instance=device_name)
    license_key = Maintenance.objects.filter(license_key = id)
    end_of_maintenance_support = MaintenanceForm()


    if request.method == "POST":

        device_form = DeviceForm(request.POST, instance=device_name)

        if device_form.is_valid():
            device_form.save()

    context = {"device_form":device_form}           

    return render(request, 'example/edit_device.html', context)  

Я знаю, что views.py неверен, но я не знаю, как исправить его, чтобы получить редактируемый экран для edit_device. html edit_ html

{% extends "example/base.html" %}

{% block content %}


<html>

<h1>Edit Device</h1>
<form method="POST">

    {% csrf_token %}    
<table class=table> 
<tr>
    <td><b>Location:&nbsp;</b></td><td>{{device_form.location}}</td>
    <td><b>Device Name:&nbsp;</b></td><td>{{device_form.device_name}}</td>
    <td><b>Maintenance Lic. Key: &nbsp;</b></td><td>{{maintenance_form.license_key}}</td>
    <td><b>Maintenance Support End Date: &nbsp;</b></td><td>{{maintenance_form.maintenance_support_end_date}}</td>
</tr>

</table>    
<br>
<br>
<br>



<button type="submit" id="save">Save Changes</button>
<!--button type="cancel">Cancel</button-->
<a href="/" ><button type="button">Home</button></a> 
<script>myFunction();</script>
</form>

</body>


{% endblock content %}
...