Как обновить модель django после использования filter или order_by? - PullRequest
0 голосов
/ 18 июня 2020

Я хочу создать веб-сайт, на котором пользователи смогут обновлять информацию. вот часть моего веб-сайта enter image description here Но у меня здесь проблема, обновление работает только тогда, когда оно находится в обычном порядке, оно не будет работать, когда я заказываю по цене или по рангу или после Я фильтрую по некоторому выбору (например, Dell, N2840). Вот часть моего кода view.py. Я хочу, чтобы обновление соответствовало номеру asin.

alldata = Output.objects.all()
if 'price_sort' in request.POST:

    alldata = alldata.order_by('-price')
    return render(request, 'polls/base.html', {'alldata': alldata})

elif 'rank_sort' in request.POST:

    alldata = alldata.order_by('rank')

    return render(request, 'polls/base.html', {'alldata': alldata})

elif 'date_sort' in request.POST:

    alldata = alldata.order_by('date')

    return render(request, 'polls/base.html', {'alldata': alldata})
if request.method == 'POST' and 'update_bt' in request.POST:

    i = 0
    asin = []
    alldata = Output.objects.all()
    for j in alldata:
        asin.append(j.asin)

    while i < len(request.POST.getlist('brand')):
        Output.objects.filter(asin = asin[i]).update(List = request.POST.getlist('list')[i])
        Output.objects.filter(asin = asin[i]).update(brand = request.POST.getlist('brand')[i])
        Output.objects.filter(asin = asin[i]).update(cpu = request.POST.getlist('cpu')[i])
        Output.objects.filter(asin = asin[i]).update(screen = request.POST.getlist('screen')[i])

        i += 1
    alldata = Output.objects.all()
    return render(request, 'polls/base.html', {'alldata': alldata})

Я понимаю, почему это работает только таким образом, но я просто не знаю, как заставить его работать во всех возможных ситуациях. Я новичок в Django. Кто-нибудь знает, как заставить работать? Спасибо.

...