【发布时间】:2011-02-19 16:51:16
【问题描述】:
我有一个模型:
class Cost(models.Model):
project = models.ForeignKey(Project)
cost = models.FloatField()
date = models.DateField()
对于模型我创建了一个ModelForm 类:
class CostForm(ModelForm):
class Meta:
model = Cost
fields = ['date', 'cost']
view.py:
def cost(request, offset):
if request.method == 'POST':
# NOTE: How to save the data in DB?
return HttpResponseRedirect('/')
else:
form = CostForm()
和下一个模板:
<form action="/cost/{{ project }}/" method="post" accept-charset="utf-8">
<label for="date">Date:</label><input type="text" name="date" value={{ current_date }} id="date" />
<label for="cost">Cost:</label><input type="text" name="cost" value="0" id="cost" />
<p><input type="submit" value="Add"></p>
</form>
问题
如何将表单中的数据保存到数据库中?
一些附加信息:
model.py 包含
class Project(models.Model):
title = models.CharField(max_length=150)
url = models.URLField()
manager = models.ForeignKey(User)
timestamp = models.DateTimeField()
我的尝试
我尝试以另一种方式实现解决方案(注意:偏移量 = 项目名称):
def cost(request, offset):
if request.method == 'POST':
form = CostForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.project = Project.objects.filter(title=offset)
instance.date = request.date
instance.cost = request.cost
instance.save()
return HttpResponseRedirect('/')
else:
form = CostForm()
但它不起作用:(
【问题讨论】:
-
这是相关的:stackoverflow.com/questions/732952/…。这个例子很到位。