python - 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>
解决方案
您需要href
将按钮切换到不同的视图。然后根据接收请求的视图,您可以更改模型对象。
如果您按以下方式进行链接 -
<a href="{% url 'changevalue' %}"> Submit </a>
或者,如果您想使用输入,您可以创建一个具有不同重定向操作的表单。
然后在相应的输入中您可以执行以下操作 -
def change(request) :
coupon = get_object_or_404( ".." = ".." )
coupon.is_shown = True
................
# your code
推荐阅读
- node.js - 从另一个云函数调用云函数
- android - Android Studio 已经在运行
- linux - sleep() 是否通过在等待结束时发送一些信号来唤醒进程?
- amazon-web-services - NativeScript AWS AppSync 集成
- xamarin.forms - Xamarin Forms ListView不在iOS,HttpClient中显示数据
- python - 我在 scipy.spatial 中找不到 ConvexHull
- wpf - Caliburn 微列表框多选 MVVM
- r - 使用 R 将 c() 中的每个数字相乘
- sharepoint - 按另一个 SharePoint 列表筛选 SharePoint 列表
- sql - 5 天滚动返回 SQL Server 2005