Просто небольшая предыстория: я новичок в Python / Django, но у меня есть рабочее приложение, которое я сделал в нем, которое я пытаюсь реструктурировать, чтобы я мог в полной мере использовать всю мощь моделей Django.В настоящее время у меня есть модель выбора, которую пользователь выбирает из раскрывающегося списка, после чего они перенаправляются на страницу успеха.В конце концов, скрипт будет выполняться на основе их выбора.На странице успеха я хочу отобразить их текущий выбор в качестве «подтверждения» того, над чем они выполняли сценарий.
После тщательного исследования я собрал своего рода направление, в котором мне нужно идти,но у меня возникли проблемы с реализацией, из-за чего я могу поверить, что мне может не хватать фундаментальных знаний о настройке модели, поэтому некоторые пояснения были бы хорошими.
В любом случае, я хочу использовать поле get_device_display в шаблоне, чтобы сделатьэтот.Однако всякий раз, когда я пытаюсь это реализовать, это не работает.Я вижу, что некоторые люди используют для этого собственные менеджеры моделей, нужно ли это как-то реализовывать?Или, может быть, сделать другую форму / TemplateView при отображении страницы успеха?Вот мой код:
modles.py
from django.db import models
class DeviceChoice(models.Model):
DEVICE_NAMES = (
('1', 'Haha123-9400-5'),
('2', 'Cisco-4506-1'),
('3', 'Test-3850-3'),
('4', 'Hello-2960C-1'),
('5', 'Router-9850-1'),
('6', 'Switch-2900-4'),
)
device = models.CharField(max_length=20, choices=DEVICE_NAMES)
objects = models.Manager()
views.py
def success(request):
return render(request, 'success.html')
class SuccessView(TemplateView):
template_name = "success.html"
class DeviceChoiceView(CreateView):
model = DeviceChoice
form_class = DeviceChoiceForm
success_url = reverse_lazy('success')
template_name = 'index.html'
success.html
<!DOCTYPE html>
<html>
<head>
<title>Port Reset</title>
</head>
<body>
<h1>Success!!</h1>
<!--Not sure how to implement below this line-->
{{ deviceSelection.get_device_display }}
</body>
Спасибо за внимание,Как я уже сказал, я понимаю, что мне не хватает чего-то фундаментального в моделях, но я не могу понять, что это может быть.
РЕДАКТИРОВАТЬ: Добавил еще немного кода.index.html (для отправки deviceSelection)
<!DOCTYPE html>
<html>
<head>
<title>Port Reset</title>
</head>
<body>
<h1>Device Database</h1>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" id="deviceSelection" value="Submit">
</form>
</body>
forms.py
from django import forms
from port_reset.models import DeviceChoice
class DeviceChoiceForm(forms.ModelForm):
class Meta:
model = DeviceChoice
fields = ['device']
EDIT 2:
Вот что я пытался сделать для моего views.py:
class SuccessView(DetailView):
model = DeviceChoice
template_name = "success.html"
queryset = DeviceChoice.objects.all()
class DeviceChoiceView(CreateView):
model = DeviceChoice
form_class = DeviceChoiceForm
#success_url = reverse_lazy('success')
template_name = 'index.html'
def get_success_url(self):
return reverse_lazy('success', kwargs={'deviceSelection': self.deviceSelction})
urls.py
urlpatterns = [
path('', DeviceChoiceView.as_view(), name='index'),
path('success/<int:deviceSelection>', SuccessView.as_view, name="success")