[英]Why my function in django to change a BooleanField is not working?
我正在嘗試從 django 中的 model 更改 BooleanField,使用通過按鈕激活但不工作的 post 方法,按鈕的 post 方法有效,但 ZC1C425268E68385D1AB5074C17A94 它不應該做什么。 當我在管理工具中更改 boolean 值時,它可以工作,我認為問題可能出在 function 但我不知道是什么問題。
這是我的 function:
def close(request, listing_id):
listing = Listing.objects.get(id=listing_id)
if request.method == "POST":
listing.active = False
listing.save()
messages.success(request, 'You closed the Auction!')
return redirect(reverse("listing", args=[listing_id]))
我要更改的 BooleanField 稱為“活動”(默認情況下為 true)。
這是按鈕:
<form action="{% url 'close' listing.id %}" method="post" >
{% csrf_token %}
<button type="submit" name="action" value="close" class="btn btn-warning mb-3">Close Auction</button>
</form>
您的代碼看起來正確,但我使用的有點不同,它對我有用。 我不在表單中使用action
屬性。 順便說一句,我使用的是 Django 4.0.7。
下面是一個例子:
視圖.py:
def items(request, slug, pk):
next = request.POST.get('next', '{% url "process" slug=slug %}')
item = Items.objects.get(item_id=pk)
if request.POST.get('start', False):
item.started = True # BooleanField 'started' (default = False, setted in the Items model)
item.save()
return HttpResponseRedirect(next)
else:
return render(request, 'items.html', {'slug':slug, 'pk':pk})
模板:
<form method="post" >
{% csrf_token %}
<button type="submit" name="start" value="start" class="btn btn-warning mb-3">Start</button>
</form>
正如你所提到的,你想要:
我要更改的 BooleanField 稱為“活動”(默認情況下為 true)。
您可以簡單地將default
選項設置為該字段的default=True
,因此:
class Listing(models.Model):
active=models.BooleanField(default=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.