簡體   English   中英

多項選擇Django復選框形式驗證

[英]Multiple Choice Django Checkbox Form Validation

我有一個帶有favourite_trees字段的表單,我希望它的3個選擇顯示為復選框。 然后,我希望用戶能夠選中0到3個復選框,並保存這些結果。 但是,當我嘗試保存表單時, favourite_trees字段僅保存為空列表。 其他字段正確保存。 如何解決此問題,以便選中的復選框能保存?

forms.py

class TreesForm(forms.models.ModelForm):
    favourite_trees = forms.MultipleChoiceField(choices=TreePreference.TREE_CHOICES,
        widget=forms.CheckboxSelectMultiple())
    class Meta:
        model = TreePreference
        fields = (
                'tree_knowledge',
                'tree_type',)
        widgets = {
            'tree_type': forms.HiddenInput(),
        }

models.py

class TreePreference(models.Model):
    TREE_CHOICES = ('red_trees',
                    'blue_trees',
                    'purple_trees',
                   )
    tree_knowledge = model.CharField(blank=True, max_length=10)
    tree_type = model.CharField(blank=True, max_length=20)
    favourite_trees = models.CharField(choices=TREE_CHOICES, max_length=50, blank=True)

因為您的favourite_trees字段是具有choicesCharField ,所以它僅將TREE_CHOICES中的一種樹類型存儲為字符串,因此無法直接使用MultipleChoiceField進行保存。 您應該使用創建一個名為TreeChoice的單獨模型,然后將字段favourite_trees更改為指向該模型的ManyToManyField

還有一個django-multiselectfield包,可以幫助您存儲不需要單獨模型的多個(字符串)值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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