【问题标题】:IntegrityError user_id may not be NULLIntegrityError user_id 可能不为 NULL
【发布时间】:2010-12-13 17:17:59
【问题描述】:

这是我的 forms.py 文件

 def save(self,ip_address, *args, **kwargs):
        g = GeoIP()
        lat,lon = g.lat_lon(ip_address)
        user_location = super(registerForm, self).save()
        user_location.latitude = lat
        user_location.longitude = lon
        user_location.save(*args, **kwargs)

在我看来我有

def status_set(request):
    if request.method == "POST":
        rform = registerForm(data = request.POST)
        if rform.is_valid():
            register = rform.save(ip_address='203.99.178.139')
            register.user=request.user
            register.save(ip_address)
            return render_to_response('home.html')
    else:
        rform = registerForm() 
    return render_to_response('status_set.html',{'rform':rform}) 

但当我尝试提交表单时,它显示“IntegrityError:accounts_register.user_id 可能不是 NULL”,但我认为 register.user=request.user。我必须将“Id”或“PK”作为参数传递给表单还是我犯了错误

【问题讨论】:

标签: django django-forms django-views


【解决方案1】:

您可能正在处理 AnonymousUser 对象,并且 id 将始终设置为 None。如果您正在运行./manage.py runserver,请尝试使用pdb,方法是在失败的语句之前添加如下一行:

import pdb; pdb.set_trace()

这会将您带入REPL,您可以在其中逐步浏览并探索您的代码。

【讨论】:

  • 我已经使用 import pdb 进行了检查,并且在这一行之后代码失败 register = rform.save(ip_address='203.99.178.139') 我是否必须将其作为参数传递给表单保存方法跨度>
  • 我只能回答这个问题,因为这完全取决于您的 registerForm.save() 中的代码。您可以 [s] 进入您的 save() 子例程,转到 [n]ext 语句,或在 pdb 提示符处 [c] 继续。如果您很难理解 pdb 文档,这里有一个 pdb 助手:pythonconquerstheuniverse.wordpress.com/category/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 2021-06-12
  • 1970-01-01
  • 2019-09-02
  • 2012-12-03
  • 2012-11-03
相关资源
最近更新 更多