pythons ユニオン演算子を使用してクエリセットを構築しようとしています -
class PrimaryCategoryForm(forms.ModelForm):
set_1 = PrimaryAdCategoryType.objects.filter(pk=2)
set_2 = PrimaryAdCategoryType.objects.filter(pk=3)
qs = set_1 | set_2
primarycategorytype = forms.ModelMultipleChoiceField(queryset=qs,
required=True,
widget=forms.CheckboxSelectMultiple)
|
オペレーターは、 のすべてのアイテムと のすべてのアイテムを含む新しいセットを作成していset_1
ますset_2
。
アップデート
上記の方法は複雑なセットの作成をサポートしますが。いくつかの pk を選択するだけの場合は、コメントでの Martin の提案でおそらく十分です。
class PrimaryCategoryForm(forms.ModelForm):
qs=PrimaryAdCategoryType.objects.filter(pk__in=[2,3])
primarycategorytype = forms.ModelMultipleChoiceField(queryset=qs,
required=True,
widget=forms.CheckboxSelectMultiple)
編集可能なチェックボックス
チェックボックスを編集可能にして事前に選択することになると、javascriptに頼る必要があるかもしれません。おそらく、ウィジェットにデータ属性を追加してから、データ属性に基づいてチェックボックスを操作する jquery 関数を作成します。何かのようなもの -
attrs = {'data-selected-value': 2, 'data-readonly-value': 2}
primarycateogrytype = forms.ModelMultipleChoiceField(attrs=attrs)
次に、JavaScriptで-
var readonlyCheckboxValue = $('#your_mulliplecheckboxselect).data('selected-value');
var $readonlyCheckbox = $('#your_multiplecheckboxselect .input[value=readonlyCheckboxValue]');
$readonlyCheckbox.attr('readonly', true);
私はこのコードをテストしていませんが、私が提案していることは理解できるはずです。まだ見ていない場合は、 data-attributeをチェックしてください。これは非常に素晴らしいものです。