在不使用django中的表单的情况下向数据库添加值

时间:2014-07-14 15:27:31

标签: python django django-models django-forms django-views

我是django的新手,并且陷入了一个非常基本的层面。 我想创建一个存储用户发布的文章的模型。在模型中,我能够保存我的文章但是如何在该模型中保存用户ID。 提交此表单时,仅保存标题和正文。

我的models.py文件如下:

class Article(models.Model):
    Title = models.CharField(max_length=169)
    Body = models.TextField()
    Author_id = models.CharField(max_length=3)

    def __unicode__(self):
        return self.Title

我的forms.py如下:

class AddArticle(forms.ModelForm):

    class Meta:
        model = Article
        fields = ('Title', 'Body')

和我的views.py是:

def UploadArticle(request):
    if request.POST:
        form = AddArticle(request.POST)
        if form.is_valid():
            Article.Author_id = request.user.id #I guess my mistake lies here, but how to avoid it
            form.save()
            return HttpResponseRedirect('/articles/all')
        else:
            form = AddArticle()

    args = {}
    args.update(csrf(request))
    args['form']=AddArticle()
    return render_to_response('add.html', args)

请帮助

2 个答案:

答案 0 :(得分:1)

更改 Author_id = models.CharField(max_length=3)Author = models.ForeignKey(User)

然后执行dm03514的建议

答案 1 :(得分:0)

首先获取文章实例,commit explained in docs

article = form.save(commit=False)

然后分配作者

article.Author = request.user 

创建“作者”字段将自动在表格中创建Author_id字段。我想如果你创建名为Author_id的字段,它可以创建一个Author_Id_id字段吗?在某些方面使用对象更安全,即用户'实例然后它是使用整数,即user.id

article.save()