簡體   English   中英

選擇一個有效的選項。 ["objects"] 不是可用的選擇之一。 在姜戈

[英]Select a valid choice. ["objects"] is not one of the available choices. in Django

我將創建一個表單,用戶可以在其中從選項中選擇任意數量的對象。 (MultipleChoiceField)

這是我的文件:

DAY_CHOICES = (
('saturday', 'شنبه'),
('sunday', 'یکشنبه'),
('monday', 'دوشنبه'),
('tuesday', 'سه شنبه'),
('wednesday', 'چهارشنبه'),
('thursday', 'پنج شنبه'),
('friday', 'جمعه'),)

# Models.py
class CorporationRequest(models.Model):
    user = models.ForeignKey(User)
    title = models.CharField(max_length=250, )
    explain = models.CharField(max_length=500, )
    assistance = models.CharField(max_length=250, choices=ASSISTANCE_CHOICES)
    days =   # MultipleChoiceField
    created_date = models.DateTimeField( auto_now_add=True)

# Forms.py
class ObjectsForm(ModelForm):
    objects = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                     choices=OBJECT_CHOICES)
    class Meta:
        model = ObjectModel
        fields = '__all__'
# Views.py 
def add_corporation(request)
    if request.method == "POST":
        form = ObjectsForm(request.POST)
        if form.is_valid():
            new_corporation = form.save(commit=False)
            new_corporation.days = ','.join(form.cleaned_data['days'])
            new_corporation.save()
            return redirect('administrator:view_admin_user_corporation')
    else:
        form = ObjectsForm()
    template = 'corporation.html'
    context = {'form': form, }
    return render(request, template, context)

當我單擊提交按鈕(例如選擇對象 1 和 2)時,出現此錯誤:

Select a valid choice. ['1', '2'] is not one of the available choices.-

提示:每個用戶向我們發送包含解釋和他可以做某事的天數的請求。 因此,每個用戶都可以選擇他想要的任何一天。

如果您必須將CorporationRequest.days保留為CharField那么您可以將日期選擇保存為字段中的逗號分隔字符串

class CorporationRequest(models.Model):
    days = models.CharField(max_length=255)

您必須清理來自多項選擇字段的數據,以便將其保存在該字段中

class CorporationRequestForm(ModelForm):
    days = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                 choices=DAY_CHOICES)
    class Meta:
        model = CorporationRequest
        fields = '__all__'

    def clean_days(self):
        return ','.join(self.cleaned_data['days'])

這意味着CorporationRequest.days現在是一個字符串而不是天數列表。 您可以向CorporationRequest模型添加一個方法以返回天數列表

def get_days(self):
    return self.days.split(',')

暫無
暫無

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

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