请问大家,这个错误是怎么回事呀?!!DatabaseError at /post/Exception Value: null value in column "receiver" violates not-null constraint
 
我用django做了个留言板应用修改时在forms.py文件中多加了一个条件,在发信息时,如果指定收信息的人不是已注册的用户(该用户不存在),则引发一个ValidationError异常.大概是这样的:
class MsgPostForm(forms.Form):    receiver=forms.CharField(label='Send to:',
        widget=forms.TextInput (attrs={'size':30, 'max_length':30}))
    
    #实例化一个用于输入留言标题的文本框对象,
    #并将该对象保存到title属性中。
    title=forms.CharField(label='Title',
        widget=forms.TextInput (attrs={'size':30, 'max_length':30}))
    #实例化一个用于输入留言内容的文本框对象,
    #并将该对象保存到content属性中。
    #该文本框会转换为tinymce富文本编辑器的外观。
    content=forms.CharField(label='Content',
        widget=forms.Textarea(attrs={'size':10000}))
    #该函数用于验证用户输入receiver username的合法性
    def clean_receiver(self):
        if 'username' in self.cleaned_data:
            #从通过一般性验证的用户名输入到指定的receiver文本框中
            #并保存到变量receiver中
            receiver=self.cleaned_data['receiver']
            if receiver==username:
                return receiver
            #如果该用户不存在,则引发一个ValidationError异常
            raise forms.ValidationError('This user does not exist.')在运行时就出现上面说的错误了,不知道是设置数据库时出的问题还是多加了这些脚本的问题,之前都没事的.请高手帮帮忙,小女子感激不尽~~~~

解决方案 »

  1.   

    你的代码中与数据库操作无关。 仅从数据库的信息来说,你的receiver字段没有赋值。需要检查你的INSERT语句或UDATE语句。
      

  2.   


    我想把数据库表定义的非空限制去掉, 试着进sql输入update messageboard_msg set receiver=NULL,可是都不管用.而且还显示ERROR: Relation "messageboard_msg" does not exist.有人说可以用postgres的pgAdminIII直接把column上not null的对勾去掉,可是我找不到那个地方.原谅菜鸟无知吧~~~
    不知道是不是这个地方,我勾了,可是却不起作用,还是出现同样的error.
      

  3.   

    去掉receiver的not null属性alter table messageboard_msg alter receiver drop NOT NULL;
      

  4.   

    唉~~ 我快郁闷死了,本以为问题可以解决了,可是却说我的table不存在我试了各种我可能用到的table名字,都是不存在.我也不知道怎么弄的,这个留言板应用是用django做的,按说table应该自动就弄好的呀.
      

  5.   

    先找到数据库
    psql -l然后
    psql your_db_name察看table
    \d
      

  6.   

    谢谢loveflea帮忙~~~现在问题解决了~~~