如何将数据从ModelForm保存到django中的数据库? [英] How do I save data from a ModelForm to database in django?

查看:229
本文介绍了如何将数据从ModelForm保存到django中的数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个模型:

class Cost(models.Model):
    project = models.ForeignKey(Project)
    cost = models.FloatField()
    date = models.DateField()

对于模型,我创建了一个 ModelForm 类:

For the model I created a ModelForm class:

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()



我的尝试



我试图在一个下一个方法(注意:offset =项目名称):

My attempt

I tried to implement the solution in a next way (note: offset = project name):

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()

但它不起作用:(

推荐答案

我找到了解决方案。仅在view.py中重写代码如下:

I found the solution. Rewrote code only in view.py as follows:

def cost(request, offset):
    if request.method == 'POST':
        project = Project.objects.get(title=offset)
        date = request.POST.get('date', '')
        cost = request.POST.get('cost', '')
        cost_obj = Cost(project=project, date=date, cost=cost)
        cost_obj.save()
        return HttpResponseRedirect('/')

代码的其余部分不会更改。

Rest of the code is not changed.

这篇关于如何将数据从ModelForm保存到django中的数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆