python - 如何在视图中动态更新 Django Form min_value?
问题描述
我正在尝试创建一个拍卖网站,用户可以在其中对物品出价。我在模型中存储最低出价,并在加载视图时检索该值。我想使用 min_value 来防止用户出价低于min_bid
.
我没有收到任何错误,只是 min_value 不起作用。
我的表单类:
class place_bid(forms.Form):
bid_amount = forms.IntegerField(label="Bid Amount")
def __init__(self, min_value, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['bid_amount'].min_value = 1
加载表单的视图(此时我还没有写出我实际处理用户提交的部分,只是想先得到正确的验证)
def listings(request, listing_id):
listing = Listing.objects.get(id=listing_id)
if request.method == "POST":
min_bid = listing.min_bid
return render(request, "auctions/listings.html", {
"listing": listing,
"bids": listing.bids.all(),
"form": place_bid(min_value={"bid_amount":5})
})
if request.method == "GET":
return render(request, "auctions/listings.html", {
"listing": listing,
"bids": listing.bids.all(),
"form": place_bid(min_value={"bid_amount":5})
})
的HTML:
<form action="/listings/{{listing.id}}" method="post">
{% csrf_token %}
{{ form }}
<button class="btn btn-primary" type="submit">Place Bid</button>
</form>
我已经测试了删除所有的def __init__
东西并更改bid_amount = forms.IntegerField(label="Bid Amount")
为 `bid_amount = forms.IntegerField(label="Bid Amount", min_value=5) 并且有效,但我需要能够动态更新它。我假设我对这种语法做错了。有人可以让我知道我需要改变什么吗?非常感谢!
编辑:这是我的出价模型:
class Bid(models.Model):
listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name="bids", blank=True)
bid_amount = models.DecimalField(max_digits=10, decimal_places=2, null=True)
bid_by = models.ForeignKey(User, on_delete=models.CASCADE, related_name="bids", null=True)
bid_time = models.DateTimeField(auto_now_add=True, null=True, blank=True)
def __str__(self):
return f"The last bid on {self.listing} was {self.bid_amount}. Placed by {self.bid_by}"
解决方案
推荐阅读
- javascript - 错误 无效的挂钩调用。Hooks 只能在函数组件的主体内部调用
- r - 如何将 grep 函数与包含数字 (R) 的变量一起使用
- python - 如何使用 python3 运行 ansible 库存脚本
- javascript - 如何在 vue js 中将组件作为道具传递以及如何正确使用它?
- javascript - 在对象数组中过滤数组
- mysql - SELECT 查询的问题(NodeJs 和 mySQL)
- javascript - 在其他页面上没有问题的 EJS 部分在一个页面上抛出 500 错误
- javascript - Strapi 发送邮件不工作。你能帮我吗?
- azure - 此区域不允许此订阅进行缩放操作
- git - 我可以发出“git remote update”来下载远程 git 的一部分吗