首页 > 解决方案 > 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)

看法

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



def change_is_shown(request):
     c = Coupon.objects.first()
     c.is_shown = True
     c.save()

网址

urlpatterns = [
    path('', CouponListView.as_view(), name='coupons_list'),
    path('show_coupon', change_is_shown)
]

模板

<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>

标签: pythondjango

解决方案


您需要href将按钮切换到不同的视图。然后根据接收请求的视图,您可以更改模型对象。

如果您按以下方式进行链接 -

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

或者,如果您想使用输入,您可以创建一个具有不同重定向操作的表单。

然后在相应的输入中您可以执行以下操作 -

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



推荐阅读