【问题标题】:Django - Error - Select a valid choice. [<some choice>] is not one of the available choicesDjango - 错误 - 选择一个有效的选项。 [<some choice>] 不是可用选项之一
【发布时间】:2016-05-15 15:52:32
【问题描述】:

views.py

class AddLocationPageView(FormView):
    template_name = 'add_location.html'
    form_class = LocationForm
    success_url = '/add_location/location_added/'

    def form_valid(self, form):
        form.save()
        return super(AddLocationPageView, self).form_valid(form)

models.py

type_choices = (
    ('Рассвет/Закат', 'Рассвет/Закат'),('Ландшафт', 'Ландшафт'),('Природа', 'Природа'),
    ('Вода', 'Вода'),('Животные', 'Животные'),('Люди', 'Люди'),
    ('Архитектура', 'Архитектура'),('Город', 'Город'),('Астрофото', 'Астрофото'),
    ('Панорама', 'Панорама'),('Транспорт', 'Транспорт'),('Свадьба', 'Свадьба'),
)

visit_choices = (
    ('Январь', 'Январь'),('Февраль', 'Февраль'),('Март', 'Март'),
    ('Апрель', 'Апрель'),('Май', 'Май'),('Июнь', 'Июнь'),
    ('Июль', 'Июль'),('Август', 'Август'),('Сентябрь', 'Сентябрь'),
    ('Октябрь', 'Октябрь'),('Ноябрь', 'Ноябрь'),('Декабрь', 'Декабрь'),
)

class Location(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
    name = models.CharField(max_length=100, verbose_name="Локация", default='')
    types = models.CharField(max_length=50, verbose_name="Тип локации", choices=type_choices, default='')
    visit_times = models.CharField(max_length=50, verbose_name="Лучшее время для съемки", choices=visit_choices, default='')
    photos = models.ImageField(upload_to='photos', null=True, blank=True)
    keywords = models.CharField(max_length=100, verbose_name="Ключевые слова", default='')
    description = models.TextField(null=True, blank=True)

    def __unicode__(self):
        return self.name

forms.py

class LocationForm(forms.ModelForm):
    class Meta:
        model = Location
        fields = ['name', 'types', 'visit_times', 'photos', 'keywords', 'description']
        widgets = {
            'name': forms.TextInput(attrs={'placeholder': 'Напр. Стоунхендж'}),
            'types': forms.SelectMultiple(),
            'visit_times': forms.SelectMultiple(),
            'keywords': forms.TextInput(attrs={'placeholder': 'Напр. море, побережье, скалы'}),
            'description': forms.Textarea(attrs={'placeholder': 'Любая информация, которую посчитаете нужной'})
        }

我填写页面上的字段并在 SELECT 字段上做一些选择。然后我按下按钮并在 SELECT 字段上得到错误 - >选择一个有效的选择。 [一些选择]不是可用的选择之一

非常感谢!

【问题讨论】:

    标签: python django


    【解决方案1】:

    试试

        'types': forms.Select(),
        'visit_times': forms.Select(),
    

    您在模型中定义了 types 和 visit_times 只能从选项中获得一个值。可以获得更多选择,但您必须考虑如何将这些数据保存到数据库。看看这个:

    https://pypi.python.org/pypi/django-multiselectfield/

    https://pypi.python.org/pypi/django-select-multiple-field/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 2018-04-30
    • 2018-08-13
    • 2016-09-30
    • 2012-05-13
    • 1970-01-01
    • 2020-10-30
    • 2018-06-11
    相关资源
    最近更新 更多