【发布时间】:2021-01-19 15:00:55
【问题描述】:
所以,我的基本想法是,当学生输入其教育机构提供的优惠券时,系统应检查该优惠券是否存在于数据库中,并显示一条消息说该优惠券是否在数据库中已验证,但实际发生的是出现“errorList”消息,说明优惠券已在数据库中退出,而我的自定义消息从未出现
这是我的意见功能
def apply_coupon(request):
if request.method == 'POST':
form = ApplyCouponForm(request.POST)
if form.is_valid():
# code_entered = request.POST.get('code')
code_entered = form.cleaned_data['code']
coupon = Coupon.objects.filter(code = code_entered).first()
is_available = True if coupon else False
is_active = coupon.active if coupon else False
if is_available and is_active:
messages.info(request, 'Your coupon is verified!')
else:
messages.info(request, 'Your coupon is in valid!')
else:
form = ApplyCouponForm()
return render(request, 'app/applyCoupon.html', {'form': form})
is_available = Coupon.objects.get(code=code_entered).exists()这行检查优惠券是否存在于数据库中
is_active = Coupon.objects.get(active=True).exists()这个检查它是否处于活动状态
if is_available & is_active:我认为这种情况永远不会成立,但我不知道为什么
这是models.py中的优惠券模型
# coupons model
class Coupon(models.Model):
code = models.CharField(primary_key=True, max_length=50, unique=True)
active = models.BooleanField()
def __str__(self):
return self.code
这是我的 html 模板
{% extends 'base_layout.html' %}
{% block content %}
<div class="applyCoupon">
<form class="applyCoupon_form" action="{% url 'app:applyCoupon' %}" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="verify">
</form>
</div>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
这是我用来向数据库添加新优惠券的视图函数
def addCoupon(request):
if request.method == 'POST':
form = AddCouponForm(request.POST)
if form.is_valid():
# save coupon to db
form.save()
messages.info(request, 'Your coupon has been saved successfully!')
else:
form = AddCouponForm()
return render(request, 'app/addCoupon.html', {'form': form})
这是我向 db 添加优惠券的表单
# add coupon form
class AddCouponForm(forms.ModelForm):
code = forms.CharField(max_length=4000)
class Meta:
model = Coupon
fields = ('code', 'active')
这也是我验证或验证优惠券的表格
# apply coupon form
class ApplyCouponForm(forms.ModelForm):
code = forms.CharField()
class Meta:
model = Coupon
fields = ('code',)
我尝试了所有答案,但它一直在浏览器上显示此消息
a screen shot of my browser where my main problem is
而不是我想要的消息这是messages.info(request, 'Your coupon is verified!')
如果您对我的问题有任何不清楚的地方,请告诉我,我会为您澄清,我只是绝望
【问题讨论】:
-
is_active = Coupon.objects.get(active=True).exists()如果有任何活动的Coupon对象,这将是真的。您需要获取优惠券,然后查看:current_coupon = Coupon.objects.get(code=current_code)。if current_coupon.active ... -
使用 is_available = Coupon.objects.filter(code=code_entered, active=True).first().exists()。你可能不需要 is_active 变量
-
@mobiusxs 我试过你的答案,但它仍然在浏览器上给我这个消息,而不是 ``` 代码:带有此代码的优惠券已经存在。 ```
-
@dishantmakwana 我试过你的答案,但它仍然在浏览器上给我这个消息,而不是 ``` 代码:带有此代码的优惠券已经存在。 ```
-
你能发布你更新的代码吗?