所以我有以下模型:
class Recipe(models.Model):
title = models.CharField(max_length=100)
ingredients = models.TextField(max_length=200,help_text="Put the ingredients required for the recepies here !")
instructions = models.TextField(max_length=500)
posted_on = models.DateTimeField('Posted On')
def __unicode__(self):
return self.title
现在我想要做的是我有一个名为 add.html 的 html 前端,其形式如下:
<!DOCTYPE html>
<head><title>New Recipe</title></head>
<body>
<h1>Add A new Recipe Here</h1>
<form action="/recipes/add/" method="post">
{% csrf_token %}
<label>ID<label>
<input type="number" name="id"></input><br />
<label>Title </label>
<input type ="text" name="title"><br />
<label>Ingredients</label>
<input type="text" name="ingredients" />
<br />
<label>Instructions </label>
<input type="text" name="instructions" />
...
这是我使用以下方法保存表单的方法ModelForm
:
def add(request):
if request.method == 'POST':
form = RecipeForm(request.POST)
if form.is_valid():
form.save()
#redirect
return HttpResponse("Thank you")
else:
return HttpResponse("Form Not Valid")
else:
form = RecipeForm()
context = Context({'form':form,})
context.update(csrf(request))
template = loader.get_template('myApp/add.html')
return HttpResponse(template.render(context))
当我运行它时,我总是得到"form Invalid"
所以现在我的问题是,html 表单 add.html 是否应该将 EXACT 映射作为我的模型配方?
如果是,那么
- 如何
types
在 html 表单中添加相应的(forposted_on
)? - 如何处理由
id
隐式创建的syncdb
? - 有没有其他选择?
我刚开始学习Django