簡體   English   中英

如何將復選框值鏈接到模型的屬性?

[英]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不僅僅是TrueFalse

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.

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