Django表单“输入有效日期”。

时间:2013-04-22 16:23:56

标签: django forms date date-format

我在写一个简单的表格时遇到了问题。 这是我表格的模型。

class UserStock(models.Model):
    amount = models.FloatField(default=0)
    date = models.DateTimeField('buy date')
    stockPrice = models.FloatField(default=0)
    user = models.ForeignKey(User)
    stock = models.ForeignKey(Stock)

这是我的forms.py文件

from django import forms
from datetime import date

class AddStockForm(forms.Form):
    stock = forms.CharField(max_length=10)
    amount = forms.FloatField(initial=0)
    #, initial=date.today, input_formats=settings.DATE_INPUT_FORMATS
    date = forms.DateField('buy date', initial=date.today)
    stockPrice = forms.FloatField(initial=0)

这是我提交表单数据的第一个版本。

@login_required(login_url='/login/')
def new_stock(request):
    if request.method == 'POST':
        form = AddStockForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data

            #dateForm = datetime.datetime.strptime(cd['date'],"%Y-%m-%d")
            userStock = UserStock(amount = cd['amount'], date=cd['date'], stockPrice = cd['StockPrice'])
            userStock.user = request.user
            stockForm = Stock.objects.filter(symbol=cd['stock'])
            userStock.stock = stockForm
            userStock.save()
    else:
        form = AddStockForm()

    template = loader.get_template("userStocks/new.html")
    context = RequestContext(request, {
        'form':form.as_p(),
    })
    return HttpResponse(template.render(context))

这就是我的错误。 enter image description here 提交时出错:输入有效日期。 我想这是Django的自动检查格式。我google了很多但没有帮助。我尝试过input_formats变种,但没有运气。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:11)

我认为这条线会做。

date = forms.DateField(label='buy date', input_formats=['%Y-%m-%d'], initial=date.today)

我认为该表单接受“购买日期”作为您的输入格式,这就是为什么当您尝试手动设置它时会发送重复的错误。

希望这有效

PS:也许在指定“购买日期”是您的标签后,您可以删除input_formats属性。