#django #django-models #django-views #django-class-based-views #django-pagination
Вопрос:
app/views.py:
class HomeView(ListView): model=Movement template_name='home.html' paginate_by = 10 def get_context_data(self, **kwargs): context = super(ListView, self).get_context_data(**kwargs) mov_objs = Movement.objects.all() paginator = MyPaginator(mov_objs, self.paginate_by) page = self.request.GET.get('page', paginator.num_pages) try: page_obj = paginator.page(page) except PageNotAnInteger: page_obj = paginator.page(1) except EmptyPage: page_obj = paginator.page(paginator.num_pages) context['page_obj'] = page_obj ids=list(page_obj.object_list.values_list('id', flat=True)) sale_id = str(Sale.objects.filter(stored_ids=sorted(ids))).split('(')[1].split(')')[0] if self.request.method == 'GET': inv_no = self.request.GET.get('inv_no','0') context['inv_no']=inv_no else: inv_no = '0' sale_data=sale_id ',' inv_no context['sale_data']=sale_data return context def TallyExport(request,sale_data): t = loader.get_template('template.xml') [sale_id , inv_no] = [int(item) for item in sale_data.split(',')] mov_obj_ids = Sale.objects.filter(id=sale_id).values_list('stored_ids')[0][0] mov_obj = Movement.objects.filter(id__in=mov_obj_ids) response = HttpResponse(t.render({'mov_obj':mov_obj,'inv_no':inv_no}), content_type="application/xml") response['Content-Disposition'] = 'attachment; filename=file.xml' return response
Шаблон django:
lt;centergt; lt;h1gt;Title Pagelt;/h1gt; lt;/centergt; lt;h4gt; lt;div class="pagination"gt; lt;span class="step-links"gt; {% if page_obj.has_previous %} lt;a href="?{% if inv_no %}inv_no={{inv_no}}amp;{% endif %}page=1"gt;amp;laquo; firstlt;/agt; lt;a href="?{% if inv_no %}inv_no={{inv_no}}amp;{% endif %}page={{ page_obj.previous_page_number }}"gt;previouslt;/agt; {% endif %} lt;span class="current"gt; Sale {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}. lt;/spangt; {% if page_obj.has_next %} lt;a href="?{% if inv_no %}inv_no={{inv_no}}amp;{% endif %}page={{ page_obj.next_page_number }}"gt;nextlt;/agt; lt;a href="?{% if inv_no %}inv_no={{inv_no}}amp;{% endif %}page={{ page_obj.paginator.num_pages }}"gt;last amp;raquo;lt;/agt; {% endif %} lt;/spangt; lt;/divgt; lt;/h4gt; lt;form method="GET"gt; lt;input type="number" id="inv_no" name="inv_no" placeholder="Invoice No"gt; lt;input type="submit" value="Save"gt; lt;/formgt; {% if 'inv_no' in request.GET %} lt;a href="{% url 'tally' sale_data %}"gt;Export To Tallylt;/agt; {% endif %} lt;ulgt; {% for post in page_obj %} lt;ligt;lt;a href="{% url 'mov_details' post.pk %}"gt;{{post.Party}} - {{post.ACofParty}}lt;br /gt; {{post.PartyRef}}-{{post.VehicleNo}}-{{post.ContainerNo}}-{{post.Size}}'-{{post.Status}}lt;/agt;-lt;a href="{% url 'update_mov' post.pk %}"gt;(Edit)lt;/agt; -lt;a href="{% url 'delete_mov' post.pk %}"gt;(Delete)lt;/agt;lt;/ligt; {% endfor %} lt;/ulgt;
В этом коде конкретные данные модели-1(Перемещение) отображаются путем отображения идентификаторов, хранящихся в поле Списка Модели-2(Продажа). После этого пользователь заполняет поле под названием номер счета-фактуры. Затем при нажатии кнопки в систему загружается XML-файл, который использует идентификатор модели-1 и номер счета-фактуры для заполнения определенных данных. Однако всякий раз, когда номер счета заполняется, страница перенаправляется на домашнюю страницу по умолчанию, на которой отображается последний экземпляр модели-1. Как я могу убедиться, что параметры страницы также отображаются в ссылке get URL. Примечательно отметить, что мне удалось получить номер счета-фактуры в URL-адресе get с помощью django, если-иначе, если нажата предыдущая или следующая.