Добавление данных в форму в представлении, отображаемом в шаблоне - PullRequest
0 голосов
/ 02 мая 2019

Передает данные из одного представления в другое. Например, forwarding=123 теперь я хочу, чтобы пересылка отображалась в моем HTML-шаблоне, как в примере ниже. enter image description here

Как передать параметр 'forwarding' моему get при следующем просмотре, чтобы он был виден в шаблоне и чтобы я мог изменить его позже в шаблоне .?

Мой следующий вид

def search(request, forwarding):
    product_list = Product.objects.all().order_by('created')
    product_filter = ProductFilter(request.GET, queryset=product_list) #How can i add here forwarding

    context = {'product_filter': product_filter,}
    return render(request, 'search.html', context)

Мои фильтры.py

from .models import Product
import django_filters

class ProductFilter(django_filters.FilterSet):
    title = django_filters.CharFilter(lookup_expr='icontains')
    class Meta:
        model = Product
        fields = ['title']

Любая помощь будет оценена.

1 Ответ

1 голос
/ 02 мая 2019

Я думаю, вы ищете параметр initial для форм.

def search(request, forwarding):
    product_list = Product.objects.all().order_by('created')
    initial = {'title': request.GET.get('forwarding')}
    product_filter = ProductFilter(
        request.GET,
        queryset=product_list,
        initial=initial,
    )
    context = {'product_filter': product_filter,}
    return render(request, 'search.html', context)

Я не заметил, что вы используете FilterSet. Вы можете переопределить данные GET следующим образом:

def search(request, forwarding):
    product_list = Product.objects.all().order_by('created')
    data = dict(request.GET)
    if 'title' not in data:
        data['title'] = request.GET.get('forwarding')
    product_filter = ProductFilter(
        data,
        queryset=product_list,
    )
    context = {'product_filter': product_filter,}
    return render(request, 'search.html', context)
...