У меня есть запрос, запущенный из двух разных таблиц, но я, когда я 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: </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: </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: </b></td><td>{{device_form.location}}</td>
<td><b>Device Name: </b></td><td>{{device_form.device_name}}</td>
<td><b>Maintenance Lic. Key: </b></td><td>{{maintenance_form.license_key}}</td>
<td><b>Maintenance Support End Date: </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 %}