Django: как я могу изменить значение переменной модели через шаблон

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

МОДЕЛЬ

class Coupon(models.Model):
    name = models.CharField(max_length=255)
    price = models.PositiveIntegerField()
    is_shown = models.BooleanField(default=False)
    is_used = models.BooleanField(default=False)
    pub_date = models.DateTimeField(auto_now_add=True)

VIEW

class CouponListView(ListView):
    model = Coupon
    paginate_by = 10

ШАБЛОН

<ul>
    {% for coupon in object_list %}
        {% if not coupon.is_used %}
            <li>
                {% if coupon.is_shown %}
                    {{ coupon.name }}
                {% else %}
                    {{ coupon.price }}
                    <input type="submit" value="show" name="show_coupon">
                {% endif %}
            </li>
        {% endif %}
    {% endfor %}
</ul>

Вам нужно href переместить кнопку в другое представление. Затем в зависимости от того, какое представление получает запрос, вы можете изменить объект модели.

если вы делаете привязку следующим образом -

<a href="{% url 'changevalue' %}"> Submit </a>

или вы можете создать форму с другим действием перенаправления, если вы хотите использовать input.

Тогда в соответствующем входе вы можете сделать следующее -

def change(request) :
  coupon = get_object_or_404( ".." = ".." )
  coupon.is_shown = True
  
  ................
  # your code 


Вернуться на верх