【问题标题】:Why is my multiple select form field only submitting one value Django?为什么我的多选表单字段只提交一个值 Django?
【发布时间】:2020-04-12 13:45:23
【问题描述】:

无法让此表单从我的多选表单字段提交/保存多个输入...

def StaffHome(request):

dates = request.user.availability_set.all()
bookings = request.user.booking_set.all()

if request.method == 'POST':
    if 'remove' in request.POST:
        form = RemoveDate(request.user, request.POST)
        if form.is_valid():
            for d in form.cleaned_data['date']:
                for i in dates:
                    if d == str(i.dates):
                        i.delete()
                    return redirect('main-home')
    elif 'add' in request.POST:
        form = AddDate(request.user, request.POST)
        if form.is_valid():
            for d in form.cleaned_data['date']:
                Availability.objects.create(user=request.user, dates=d)
                return redirect('main-home')



context = {
    'today': datetime.datetime.now().date(),
    'bookings': bookings,
    'form': AddDate(request.user),
    'form2': RemoveDate(request.user),
    'dates': dates
}

return render(request, 'users/staffhome.html', context)

我尝试使用 request.POST.getlist('date') 但这会引发方法对象不可下标错误。

【问题讨论】:

标签: python django


【解决方案1】:

你是不是在正确的地方返回,请检查。

def StaffHome(request):

dates = request.user.availability_set.all()
bookings = request.user.booking_set.all()

if request.method == 'POST':
    if 'remove' in request.POST:
        form = RemoveDate(request.user, request.POST)
        if form.is_valid():
            for d in form.cleaned_data['date']:
                for i in dates:
                    if d == str(i.dates):
                        i.delete()
             return redirect('main-home')
    elif 'add' in request.POST:
        form = AddDate(request.user, request.POST.getlist('add'))
        if form.is_valid():
            for d in form.cleaned_data['date']:
                Availability.objects.create(user=request.user, dates=d)
            return redirect('main-home')



context = {
    'today': datetime.datetime.now().date(),
    'bookings': bookings,
    'form': AddDate(request.user),
    'form2': RemoveDate(request.user),
    'dates': dates
}

return render(request, 'users/staffhome.html', context)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2012-01-17
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多