в django проекте есть определенный список услуг, и есть анкета для записи на определенную услугу
'''models.py'''
class Person(models.Model):
""" Клиенты """
name = models.CharField(max_length=50)
birthday_time = models.DateTimeField() # Время
birthday_place = models.CharField(max_length=200) # Место
contacts = models.CharField(max_length=250) # Контакты
comment = models.TextField(null=True, blank=True) # Дополнительная информация
def __str__(self):
return self.name
class Services(models.Model):
""" Услуги """
name = models.CharField(max_length=200, unique=True)
text = models.TextField(blank=True)
online_price = models.CharField(max_length=6, blank=True) # Онлайн-прайс
audio_price = models.CharField(max_length=6, blank=True) # Аудио сообщения
text_price = models.CharField(max_length=6, blank=True) # Текст
def __str__(self):
return self.name
'''views.py'''
class ServicesList(ListView):
""" Все услуги """
model = Services
ordering = 'pk'
template_name = 'services.html'
context_object_name = 'services'
paginate_by = 5
class ServiceDetail(DetailView):
""" Выбранная услуга """
model = Services
template_name = 'service.html'
context_object_name = 'service'
class PersonCreate(CreateView):
""" Анкета для клиентов """
model = Person
template_name = 'enroll.html'
context_object_name = 'quest'
fields = ['name', 'service', 'birthday_time', 'birthday_place', 'contacts', 'comment']
success_url = reverse_lazy('success')
В шаблоне со списком услуг через цикл выводим все услуги, делая название услуги ссылкой на страницу услуги:
'''services.html'''
{% block content %}
<H1>Мои Услуги</H1>
<hr>
<hr>
<table>
{% for service in services %}
<tr>
<td class="first"><b><a href="{% url 'service' service.id %}">{{ service.name }}</a></b></td>
<td class="first">{{ service.text|truncatechars:500 }}</td>
<td class="first">{{ service.online_price }}</td>
<td class="first">{{ service.audio_price }}</td>
<td class="first">{{ service.text_price }}</td>
</tr>
{% endfor %}
{% endblock %}
'''service.html'''
{% block content %}
<b>{{ service.name }}</b>
{{ service.text }}
{{ service.online_price }}
{{ service.audio_price }}
{{ service.text_price }}
<button>
<a href="/enroll/">Записаться</a>
</button>
{% endblock %}
как передать значение {{ service.name }} в следующие шаблоны, к примеру:
'''enroll.html'''
{% block content %}
<p>Записаться на {{ service_name }}</p>
<br><br>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Отправить"/>
</form>
{% endblock %}