Я ищу способ изменить «элемент» (тот, который отображается на странице) в БД. Но сначала у меня на странице должно быть 2 кнопки. И во-вторых, показанный «элемент» случайным образом взят из БД. Итак, проблема заключается в следующем: как я могу изменить информацию об элементе в БД, зная, что кнопка обновит sh страницу для отправки ее в запросе. (Я напоминаю вам, что мой элемент случайный, поэтому меняйте каждое refre sh)
Итак, мне нужен способ изменить его или способ рандомизировать страницу, но не когда я отправляю запрос POST
My views.py: (Грязно, но все в порядке xD)
def review(request):
loop = True
i = 0
while loop and i < len(Cartes.objects.filter(user_id_shared_id__exact=request.user.id).values_list('pk', flat=True))*4:
i = i + 1
pks = Cartes.objects.filter(user_id_shared_id__exact=request.user.id).values_list('pk', flat=True)
if len(pks) == 0:
loop = False
return redirect('/create/')
random_pk = choice(pks)
card = Cartes.objects.get(pk=random_pk)
obj, created = Review.objects.get_or_create(
card_id_id=card.id,
user_id_id=request.user.id,
)
print(card.id, "///", obj.id)
date_3_days = obj.review_date + datetime.timedelta(days=3)
date_7_days = obj.review_date + datetime.timedelta(days=7)
date_21_days = obj.review_date + datetime.timedelta(days=21)
date_42_days = obj.review_date + datetime.timedelta(days=42)
if obj.review_level == 1:
loop = False
elif obj.review_level == 2 and datetime.date.today() >= date_3_days:
loop = False
elif obj.review_level == 3 and datetime.date.today() >= date_7_days:
loop = False
elif obj.review_level == 4 and datetime.date.today() >= date_21_days:
loop = False
elif obj.review_level == 5 and datetime.date.today() >= date_42_days:
loop = False
else:
loop = True
if request.method=='POST' and 'btnform1' in request.POST:
print(card.id)
obj.review_level = 1
obj.review_date = datetime.date.today()
obj.save()
return redirect('review')
else:
pass
if request.method=='POST' and 'btnform2' in request.POST:
print(card.id)
obj.review_date = datetime.date.today()
if obj.review_level != 5:
obj.review_level = obj.review_level + 1
obj.save()
return redirect('review')
else:
pass
context = {'card':card}
return render(request, 'card/review.html', context)
Мой шаблон:
<body>
<div class="page">
<h1>{{ card.title }}</h1>
<div class="carte">
<p> {{ card.content }} </p>
<form method='POST'>
{% csrf_token %}
{{form1.as_p}}
<button type="submit" name="btnform1" value={{obj}}>Je n'ai pas trouvé :'c</button>
</form>
<form method='POST'>
{% csrf_token %}
{{form2.as_p}}
<button type="submit" name="btnform2">J'ai trouvé !</button>
</form>
</div>
</div>
</body>