Django 怎么实现扩展 user 模块 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
shuizhengqi

Django 怎么实现扩展 user 模块

  •  
  •   shuizhengqi Sep 29, 2017 5024 views
    This topic created in 3135 days ago, the information mentioned may be changed or developed.

    各位大佬,我最近是在边学边用 django,在开发注册模块的时候遇到了问题,一天都没解决。。 django 默认的注册是只保存 username 跟 email 的,我需要更多的信息,然后新建了一个 model

    class User_base(models.Model): user = models.OneToOneField(User) username = models.CharField(max_length=50) email = models.CharField(max_length=50) nick_name = models.CharField(max_length=50) cn_name = models.CharField(max_length=50) en_name = models.CharField(max_length=50) dept_id = models.IntegerField() job_title_id = models.CharField(max_length=50) empid = models.IntegerField() supervisor_empid = models.IntegerField() 

    然后有个表单里面设置了 dept_id 等列不为空,然后就是 view.py 里面处理接受过来的数据

     userxx = User() userxx.username = username userxx.set_password(password) userxx.email = emailadd userxx.save() 

    但是每次到 userxx.save 的时候都会报错 (1048, "Column 'dept_id' cannot be null"),我去表里查了一下,每次 auth_user 里面都有数据插入,但是跟 user 关联的 user_base 表里面却没有任何数据,我现在真的是被搞得头都大了。。。我在调试的时候看到 dept_id 是有值的,不知道为啥存的时候都提示 null

    Supplement 1    Sep 30, 2017
    已经解决了,自己设置了一个 signal...删掉之后就成功了,谢各位大佬指点。
    20 replies    2017-09-30 14:07:53 +08:00
    shuizhengqi
        1
    shuizhengqi  
    OP
       Sep 29, 2017
    查了,每次 auth_user 里面都有数据插入,但是跟 user 关联的 user_base 表里面却没有任何数据,我现在真的是被搞得头都大了。。。我在调试的时候看到 dept_id 是有值的,不知道为啥存的时候都提示 null
    shuizhengqi
        2
    shuizhengqi  
    OP
       Sep 29, 2017
    @shuizhengqi 手抖了。。。
    a87150
        4
    a87150  
       Sep 29, 2017
    没看懂,你不能直接继承 AbstractUser 吗
    shuizhengqi
        5
    shuizhengqi  
    OP
       Sep 29, 2017
    @a87150 我查到的大部分都是用 OneToOneField 做关联的,我额外存储的信息不需要做验证的,跟 profile 差不多
    yorks
        6
    yorks  
       Sep 29, 2017
    看看你的 User_base 是怎么 create 的? 怀疑你 create 的时候没有设置 dept_id 的值,然后 在 User_base 定义是必须的。
    yorks
        7
    yorks  
       Sep 29, 2017
    这些 extend profile 最好都设置成 blank=True 吧。。。
    wanghaoxi3000
        8
    wanghaoxi3000  
       Sep 29, 2017 via Android
    User_base create 了吗或者只是声明了没有调用 save() ?
    newbie269
        9
    newbie269  
       Sep 29, 2017
    dept_id 具体值的是什么呢?你在 create 的时候可以具体制定的
    linuxchild
        10
    linuxchild  
       Sep 29, 2017
    其实自己写一个不继承 User 也无所谓吧。。之前写的时候很少用到 OnetoOneField 这种(是不是我太 low 了
    linuxchild
        11
    linuxchild  
       Sep 29, 2017
    blank=True 加上吧,或者每次给一个默认值
    pynix
        12
    pynix  
       Sep 29, 2017
    酱狗一出天地灭,加入瑞思保平安。
    shuizhengqi
        13
    shuizhengqi  
    OP
       Sep 29, 2017
    @linuxchild 主要是刚上手 django,想着用自带的认证会比较方便一下

    @wanghaoxi3000
    @willhunger 有调用 save(),就是在 save 的时候报错的,我还没建 user_base 对象,因为 user 在保存的时候一直会报这个错误,我也不知道是因为什么原因,在一点点排查。我之前建 user_base 的时候,穿进去的 form 是有 dept_id 的值的
    @yorks
    @pynix 看到你说瑞思,还以为是我学校之前的睿思呢..
    DevRoss
        14
    DevRoss  
       Sep 29, 2017
    你新建对象之后没有修改 dept_id 的值?
    在 save 之前加一行
    userxx.dept_id = dept_id
    ytmsdy
        15
    ytmsdy  
       Sep 29, 2017 via iPhone
    dept_id = models.IntegerField(default=0)
    yorks
        16
    yorks  
       Sep 29, 2017
    user.save() 的时候是不会主动创建 User_base 的, 所以绝对不会报 dept_id 的问题,
    所以你还是检查一下你的 User_base 是怎么 create 的。
    我怀疑你是用了 signal 去 create 而不指定 dept_id 这个非 blank=True 的字段。

    你不要 AT 我了 上面好几个人喊你检查 User_base 的 create, 如果实在不想检查你就直接设置 blank=True 吧。
    ioREQcom
        17
    ioREQcom  
       Sep 30, 2017
    huhujin
        18
    huhujin  
       Sep 30, 2017
    User()是个哪个 model.肯定是 User_base.dept_id 没有赋值.
    shuizhengqi
        19
    shuizhengqi  
    OP
       Sep 30, 2017
    @ioREQcom 老哥,你发的这个不是文档啊。。。
    pynix
        20
    pynix  
       Sep 30, 2017
    @shuizhengqi 瑞思 == rails
    About     Help     Advertise     Blog     API     FAQ     Solana     2498 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 108ms UTC 15:38 PVG 23:38 LAX 08:38 JFK 11:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86