无法将表单内容保存到数据库

dan*_*ana 5 forms django foreign-keys insert

我试图在'微博'最小应用程序中保存用户100个字符.我的代码似乎没有任何错误,但不起作用.错误是在views.py中,我无法将外键保存到用户表.

models.py 看起来像这样:

class NewManager(models.Manager):

    def create_post(self, post, username):
 new = self.model(post=post, created_by=username)
        new.save()
        return new

class New(models.Model):

    post = models.CharField(max_length=120)
    date = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey(User, blank=True) 
    objects = NewManager()   


class NewForm(ModelForm):

    class Meta:
          model = New
          fields = ['post']
         # widgets = {'post': Textarea(attrs={'cols': 80, 'rows': 20})

def save_new(request):

    if request.method == 'POST':
        created_by = User.objects.get(created_by = user) 
        date = request.POST.get('date', '')
        post = request.POST.get('post', '')
        new_obj = New(post=post, date=date, created_by=created_by)
        new_obj.save()
        return HttpResponseRedirect('/')
     else:
           form = NewForm()     
    return render_to_response('news/new_form.html', {'form': form},context_instance=RequestContext(request))  
Run Code Online (Sandbox Code Playgroud)

我没有在这里提到进口 - 无论如何,他们做得对.我的错误在于views.py.当我试图保存时说:

在赋值之前引用的局部变量'created_by'

如果我将created_py参数设置为保存,则需要更多参数.这真的很奇怪.

Dan*_*man 7

您没有显示完整的回溯,这将有助于准确追踪错误发生的位置.(我怀疑这不是您正在运行的确切代码,或者不是实际的错误消息,因为当rebus提到错误与代码不匹配时.)

但是,有几个指针.首先,您似乎没有使用该表单进行保存.如果你这样做,你可能不会看到这个错误.您应该使用request.POST然后保存该表单,而不是从请求中手动获取值.此外,在尝试使用其值之前,您不会检查表单是否实际有效.这是你应该做的:

if request.method == 'POST':
    form = NewForm(request.POST)
    if form.is_valid():
        new_obj = form.save(commit=False)
        new_obj.created_by = request.user
        new_obj.save()
        return HttpResponseRedirect('/')
else:
    form = NewForm()
return render_to_response('news/new_form.html', {'form': form},
                          context_instance=RequestContext(request))  
Run Code Online (Sandbox Code Playgroud)

另外,请注意您的经理完全不相关 - 默认经理已经定义了create一个与您的方法完全相同的方法.