簡體   English   中英

為什么我在 django 中的 function 更改 BooleanField 不起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM