[英]How to link checkbox value to a model's attribute?
這個想法是有這樣的事情:
template.html
{% for item in items %}
<input type="checkbox" checked= {{ item.status }}>
{% endfor %}
views.py
def index(request):
context = { 'items' : Item.objects.all() }
return render(request, 'template.html', context)
但是設計的status
不僅僅是True
或False
:
models.py
class Item(models.Model):
class Status(models.TextChoices):
ON = 1
OFF = 0
status = models.IntegerField(choices=Status.choices)
# other attributes..
我將如何鏈接這兩個值以使它們雙向連接? (加載template.html
根據檢索到的item.status
生成復選框的選中item.status
(選中ON
,未選中OFF
,而選中或取消選中復選框會更改相關的item.status
值?)
我看到的唯一與我的問題最接近的是this ,但它根本不一樣。 我的是一個單一的二進制屬性,但具有不同類型的值。
首先,您的狀態似乎應該是一個 BooleanField ……但是讓我們假設您確實需要這些選擇。
您需要告訴您的表單使用 CheckboxInput 而不是 Select。 您需要告訴小部件哪個值應該檢查小部件。 您需要將返回的布爾值轉換為 Iteam.Status 屬性。
class Form(forms.ModelForm):
class Meta:
model = Item
fields = ('status',)
widgets = {
'status': forms.CheckboxInput(
check_test=lambda status: status == Item.Status.ON,
),
}
def clean_status(self):
return (
Item.Status.ON if self.cleaned_data.get('status')
else Item.Status.OFF
)
以下是您需要的文檔部分:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.