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