問題我的MultipleChoiceField. 我可以從CheckboxSelectMultiplemy 中的一個小部件中看到我的條目列表request.POST,但是當顯式調用該參數時,它只返回我的第一個條目。該表單也沒有驗證我收到的錯誤: File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\forms\forms.py", line 185, in is_valid return self.is_bound and not self.errors File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\forms\forms.py", line 180, in errors self.full_clean() File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\forms\forms.py", line 383, in full_clean self._post_clean() File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\forms\models.py", line 398, in _post_clean self.instance = construct_instance(self, self.instance, opts.fields, opts.exclude) File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\forms\models.py", line 60, in construct_instance f.save_form_data(instance, cleaned_data[f.name]) File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\db\models\fields\__init__.py", line 853, in save_form_data setattr(instance, self.name, data) File "C:\Users\lhepburn\Anaconda3\lib\site-packages\django\db\models\fields\related_descriptors.py", line 211, in __set__ self.field.remote_field.model._meta.object_name,ValueError: Cannot assign "['1', '2', '3']": "CanisterModel.test_cell" must be a "CellModel" instance.所以如果我打印request.POST我得到:<QueryDict: {'csrfmiddlewaretoken': ['9KwmPg1GzSXL98kjQbUHsvJGCIX3zNiBgqPbMPVtZtxYXKGnlZjreN9tDtDSdxiC'], 'test_cell': ['1', '2', '3'], 'canister_type': ['Total Hydrocarbons'], 'canister_change_date': ['07/07/2020'], 'time_field': ['12:30'], 'actual_conc': ['123']}>如果我打印request.POST['test_cell']我得到:'3'如果我打印request.POST.getlist('test_cell')我得到:['1', '2', '3']更奇怪的是,如果我調試到調用的斷點并在調試終端中if update_canister_form.is_valid():運行,它會返回True并且腳本會繼續。update_canister_form.is_valid()我想要的是我想驗證表單而不必復制和操作 request.POST 并將其簡單地傳遞到表單中并進行驗證。
1 回答

有只小跳蛙
TA貢獻1824條經驗 獲得超8個贊
問題源于包含test_cell在表單元字段內部。
class Meta:
model= CanisterModel
fields = ('test_cell','canister_type','canister_change_date','actual_conc',)
#removed --^
這將其從該模型字段的默認驗證中刪除。雖然我不明白這仍然無法驗證。如果有人知道請告訴我。
添加回答
舉報
0/150
提交
取消