Изменить значение поля модели после нажатия кнопки - PullRequest
0 голосов
/ 05 ноября 2018

Я действительно знаю, что это обычная тема, но я уже проверил каждое решение, которое смог найти, и оно не сработало для меня. Я хотел бы добавить пользовательские баллы, используя нажатие кнопки.

views.py

 def add_points(request):
        if request.GET.get('mybtn'):
            profil = get_object_or_404(Profile, created_by=request.user)
            profil.points += 10
            profil.save(update_fields=["points"])
            return render(request, 'users/profile.html')

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to="profile_pics")
    points = models.PositiveIntegerField(default=0)
    people = models.PositiveIntegerField(default=0)

HTML-файл

<div>
            <form method="POST">
                {% csrf_token %}
            <input type="submit" class="btn" value="+10 pkt" name="mybtn"/>
                </form>
</div>

Я пробовал разные солютоны, но у меня ничего не получалось.

1 Ответ

0 голосов
/ 05 ноября 2018

Попробуйте F функция.

from django.db.models import F
      def add_points(request):
                if request.GET.get('mybtn'):
                    profil = get_object_or_404(Profile, created_by=request.user)
                    profil.points = F('points') + 10
                    profil.save(update_fields=["points"])
                    return render(request, 'users/profile.html')
...