widzę, że otrzymałeś odpowiedź na pytanie, ale z kontekstu wynika, że chcesz dostać się do kolejnego obiektu. Przy zwiększeniu pk o 1 nie masz pewności, że taki obiekt istnieje i w tym przypadku link będzie prowadził do storny, która nie istnieje. Lepiej w modelu Question dodać metodę getnext i wtedy będziesz mógł zrobić {% url 'polls:index' question.get_next %}
Do przeszukania czy istnieje pk większe od Twojego aktualnego, możesz użyć lookupów (gt):
Question.objects.filter(pk__gt=question.pk).order_by('id').first() pamiętaj, że metoda first() w przypadku gdy QuerySet będzie pusty zwróci None, a nie wyjątek.
wybrałeś chyba najgorszą :) dlatego, że dane powinieneś wrzucić do formularza i tam walidować. Do tego co robisz teraz, przyda Ci się django-formtools - wizard
@mkusiciel: kurde nie sądziłem, że z tak prostą aplikacją tyle "zabawy" będzie. Chyba sobie jednak tego wizarda jak na razie podaruje. Tylko, że teraz muszę zrobić zliczanie punktów. Da się to jakoś zapisywać nie w bazie danych?
PS. Da się jakoś włączyć podpowiedzi w VisualCode, bo szukania metod za każdym razem w internecie to straszna mordęga.
Nie zapytałem na początku: po co tworzysz aplikację? jeżeli chcesz się nauczyć Django i programowania to warto poświęcić trochę czasu i zaznajomić się z wujkiem Google i dokumentacją :)
Zrób zwykły formularz jako ModelForm, który jest powiązany z modelem Question i będziesz mógł zapisywać odpowiedzi w łatwy sposób.
Dalej
Mam taki fragment kodu i chce w miejsce 'question.pk' wstawić 'question.pk+1'
Jak mogę przekazać do urla zinkrementowaną zmienną?
#programowanie #python
question.pk+1
?{% url 'polls:index' question.pk+1%}
?question.pk|add:"1"
https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#add
{% url 'polls:index' question.get_next %}
def get_next(self):
i=1
while True:
try:
question = Question.objects.get(pk=self.pk+i)
return question.pk
except ObjectDoesNotExist:
i+=1
Do przeszukania czy istnieje pk większe od Twojego aktualnego, możesz użyć lookupów (gt):
Question.objects.filter(pk__gt=question.pk).order_by('id').first()
pamiętaj, że metoda first() w przypadku gdy QuerySet będzie pusty zwróci None, a nie wyjątek.
lub
getnextby_FOO
https://paste.ofcode.org/c7QnhcbJeTZyNPaKnsAmyh
i chciałbym w widoku dostać się do wartości value, która jest w inpucie. Wiesz jak to mogę zrobić?
Coś czuję, że nie robię najlepszą metodą, ale przynajmniej działa.
PS. Da się jakoś włączyć podpowiedzi w VisualCode, bo szukania metod za każdym razem w internecie to straszna mordęga.
Zrób zwykły formularz jako ModelForm, który jest powiązany z modelem Question i będziesz mógł zapisywać odpowiedzi w łatwy sposób.
Niestety, ale nie używam VC, ale znalazłem coś takiego: https://code.visualstudio.com/docs/python/tutorial-django