Это сообщение было опубликовано новичком ie, который работал над этими двумя проблемами более недели безрезультатно, и теперь ищет помощи у профессионалов для достижения sh следующего.
У меня 2 страницы. Первая страница обеспечивает поиск ASSIGNMENTS.ID. Затем значение передается на вторую страницу, где отображаются данные для присвоений. Ниже все ПРОДУКТЫ, связанные с ASSIGNMENTS.ID, как fk, отображаются в таблице. Это прекрасно работает.
(ПРОБЛЕМА № 1, запрашивающая помощь с:) Я хотел бы сделать поле PRODUCTS.STATUS_CODE на странице 2 в виде раскрывающегося списка значений из данных в таблице .
Это позволит пользователю изменить значение PRODUCT.STATUS_CODE, выбрав другое значение из раскрывающегося списка.
(ПРОБЛЕМА № 2, запрашивающая помощь с:) После изменения значения PRODUCT.STATUS_CODE, как мне написать код для отправки страницы с измененным значением STATUS_CODE для сохранения в базе данных.
ПРИМЕЧАНИЕ. Страница 1 относится к «cancel_form_view» и «cancel_form» . html '
Страница 2 относится к' cancel_result_view 'и' cancel_results. html '
Вот код в Django файлах.
MODELS.PY
from django.db import models
class Assignments(models.Model):
id = models.DecimalField(db_column='ID', primary_key=True, max_digits=9, decimal_places=0)
name = models.CharField(db_column='NAME', unique=True, max_length=40)
def __str__(self):
return self.name
class Meta:
ordering = 'name',
db_table = 'ASSIGNMENTS'
class Products(models.Model):
id = models.DecimalField(db_column='ID', primary_key=True, max_digits=11, decimal_places=0)
name = models.CharField(db_column='NAME', max_length=80)
status_code = models.ForeignKey('ProductStatus', models.DO_NOTHING, db_column='STATUS_CODE')
assignment = models.ForeignKey(Assignments, models.DO_NOTHING, related_name='productsfor_assignment', db_column='ASSIGNMENT_ID', blank=True, null=True)
def __str__(self):
return self.name
class Meta:
ordering = 'name',
db_table = 'PRODUCTS'
class ProductStatus(models.Model):
code = models.CharField(db_column='CODE', primary_key=True, max_length=10)
description = models.CharField(db_column='DESCRIPTION', unique=True, max_length=80, blank=True, null=True)
def __str__(self):
return self.code
class Meta:
ordering = 'code',
db_table = 'PRODUCT_STATUS'
VIEWS.PY
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Assignments, Products
def cancel_form_view(request):
return render(request, 'assignments/cancel_form.html')
def cancel_result_view(request):
q = request.GET.get('q', None)
if q:
assignments_qs = Assignments.objects.filter(id__icontains=q) \
.prefetch_related('productsfor_assignment')
context_data = {'assignments': assignments_qs}
return render(request, 'assignments/cancel_results.html', context_data)
else:
# if the query is empty, render the 'cancel_form.html' template again.
# display an error message in that template. So, pass a template variable.
# 'cancel_form.html' will check for the 'error' variable
return render(request, 'assignments/cancel_form.html', {'error': True})
ШАБЛОНЫ
CANCEL_FORM. HTML
{% extends "base2.html" %}
{% block content %}
<p> CANCEL PRODUCT </p>
<p> Search for the Assignment. </p>
<br><br>
{% if error %}
<p style="color: red;">Please submit a search term.</p>
{% endif %}
<form action="/cancel-result/" method="get">
<input type="text" name="q" placeholder="Enter ID here ...">
<input type="submit" value="Search">
</form>
{% endblock %}
CANCEL_RESULTS. HTML
{% extends "base2.html" %}
{% block content %}
<h3> ASSIGNMENT to CANCEL product from</h3>
{% if assignments %}
<ul>
{% for assignment in assignments %}
<li><label><b>Assignment ID:</b></label> {{ assignment.id }}</li>
<li><label><b>Name:</b></label>{{ assignment.name }}</li>
</ul>
{% if assignment.productsfor_assignment.exists %}
<h3>PRODUCTS</h3>the
<table>
<tr>
<th>Prod_ID</th>
<th>Status_Code</th>
<th>Name</th>
</tr>
</table>
{% for product in assignment.productsfor_assignment.all %}
<table>
<tr>
<td><b>{{ product.id }}</b></td>
<td>{{ product.status_code }}</td>
<td>{{ product.name }}</td>
</tr>
</table>
{% endfor %}
{% endif %}
{% endfor %}
{% else %}
<p>No assignments matched your search criteria.</p>
{% endif %}
{% endblock content %}
URL-адреса. PY
from django.urls import path
from . import views
app_name = 'assignments'
urlpatterns = [
path('cancel-form/', views.cancel_form_view, name='Cancel product'),
path('cancel-result/', views.cancel_result_view),
]