Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django脚本无法保存模型实例,抱怨一个值为null的字段。。。?_Django_Django Models - Fatal编程技术网

Django脚本无法保存模型实例,抱怨一个值为null的字段。。。?

Django脚本无法保存模型实例,抱怨一个值为null的字段。。。?,django,django-models,Django,Django Models,我正在做最简单的操作,却发现一个错误。。。我拉取一个模型实例,更新一些字段,然后保存我修改的字段。我得到一个错误,说其中一个字段不允许空值。该布尔字段在models.py和数据库中有一个默认值,它是我为其保存值的字段之一 models.py class Person(TimeStampedModel): # ... precertified = models.BooleanField(default=False) logic.py try: print('Getting

我正在做最简单的操作,却发现一个错误。。。我拉取一个模型实例,更新一些字段,然后保存我修改的字段。我得到一个错误,说其中一个字段不允许空值。该布尔字段在models.py和数据库中有一个默认值,它是我为其保存值的字段之一

models.py

class Person(TimeStampedModel):
    # ...
    precertified = models.BooleanField(default=False)
logic.py

try:
    print('Getting Person %s...' % record['nurturing_id'])
    person = Person.objects.get(pk=record['nurturing_id'])
except Person.DoesNotExist:
    person = None
    print('Person %s no longer exists.' % record['nurturing_id'])
if person:
    person.uncorrected_address = person.address
    person.uncorrected_address_line_two = person.address_line_two
    person.uncorrected_city = person.city
    person.uncorrected_state = person.state
    person.uncorrected_zipcode = person.zipcode
    person.address = record['Address']
    person.address_line_two = record['Address Line Two']
    person.city = record['City']
    person.state = record['State']
    person.zipcode = record['Zipcode']
    person.precertified = True
    person.precertified_check = now
    person.save(update_fields=['precertified', 'address', 'address_line_two', 'city', 'state', 'zipcode', 'uncorrected_address', 'uncorrected_address_line_two', 'uncorrected_city', 'uncorrected_state', 'uncorrected_zipcode', ])
使用
person.save()
也会失败

回溯:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/sites/easy/apps/JSM/logic.py", line 1349, in precertify_contacts
    person.save(update_fields=['precertified', 'address', 'address_line_two', 'city', 'state', 'zipcode', 'uncorrected_address', 'uncorrected_address_line_two', 'uncorrected_city', 'uncorrected_state', 'uncorrected_zipcode', ])
  File "/Environments/easy/local/lib/python2.7/site-packages/model_utils/tracker.py", line 134, in save
    ret = original_save(**kwargs)
  File "/Environments/easy/src/easyapps/nurturing/models.py", line 248, in save
    super(Person, self).save(*args, **kwargs)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/base.py", line 708, in save
    force_update=force_update, update_fields=update_fields)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/base.py", line 736, in save_base
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/base.py", line 801, in _save_table
    forced_update)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/base.py", line 851, in _do_update
    return filtered._update(values) > 0
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/query.py", line 645, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 1149, in execute_sql
    cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql
    cursor.execute(sql, params)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/Environments/easy/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)

IntegrityError: null value in column "precertified" violates not-null constraint
DETAIL:  Failing row contains (165771, 2016-11-16 01:48:15.613901+00, 2017-02-10 14:09:34.11354+00, General Manager, Prospect, null, , email@email.com, 1671 SOME RD, None, LINTHICUM, MD, 21090-9999, null, null, null, null, null, null, 999999, null, null, null, null, , Company Name, null, null, null, null, null, null, , , null, null, null, f, null, null, null, 005o0000001fAnfAAE, , Market Specific Mass Email, null, null, 00Qo0000006RxoUEAS, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, f, null, null, 2017-02-10 14:09:34.061993+00, 1671 Some Rd, null, Linthicum, MD, 21090).
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/sites/easy/apps/JSM/logic.py”,第1349行,在预认证联系人中
保存(更新_字段=['precertified'、'address'、'address_line_two'、'city'、'state'、'zipcode'、'uncorrected_address'、'uncorrected_address_line_two'、'uncorrected_city'、'uncorrected_zipcode',])
文件“/Environments/easy/local/lib/python2.7/site packages/model_utils/tracker.py”,第134行,保存
ret=原始保存(**kwargs)
文件“/Environments/easy/src/easyapps/nurturing/models.py”,第248行,保存
超级(个人,自我)。保存(*args,**kwargs)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/base.py”,第708行,保存
强制更新=强制更新,更新字段=更新字段)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/base.py”,第736行,在save_base中
更新=自我。保存表格(原始、cls、强制插入、强制更新、使用、更新字段)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/base.py”,第801行,在保存表中
强制更新)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/base.py”,第851行,在更新中
返回已筛选的。\u更新(值)>0
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/query.py”,第645行,在更新中
返回query.get_编译器(self.db)。执行_sql(游标)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/sql/compiler.py”,第1149行,在execute_sql中
cursor=super(SQLUpdateCompiler,self)。执行sql(结果类型)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/models/sql/compiler.py”,第848行,在execute_sql中
cursor.execute(sql,params)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/backends/utils.py”,执行中第79行
返回super(CursorDebugWrapper,self).execute(sql,params)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/backends/utils.py”,执行中的第64行
返回self.cursor.execute(sql,params)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/utils.py”,第95行,在退出时__
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“/Environments/easy/local/lib/python2.7/site packages/django/db/backends/utils.py”,执行中的第64行
返回self.cursor.execute(sql,params)
IntegrityError:“预认证”列中的null值违反了NOTNULL约束
详细信息:失败的行包含(1657712016-11-1601:48:15.613901+002017-02-1014:09:34.11354+00,潜在客户总经理,email@email.com,1671一些RD,无,LINTHICUM,MD,21090-9999,null,null,null,null,99999,null,null,null,null,null,null,公司名称,null,null,null,null,null,null,null,null,null,null,f,null,null,null,null,005O0000001FAFAAE,Mar特定于ket的群发邮件,空,空,00Qo0000006RxoUEAS,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,2017-02-10 14:09:34.061993+00,1671一些Rd,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空,空。

我肯定错过了一些愚蠢的东西。有人用cluebat打我吗?

正如@Satevg所建议的,我有一个基于该模型早期版本的自定义保存方法。如果任何地址字段发生更改,它会将预认证设置为“无”(早期版本中不是布尔值)


(@Satevg-如果你想重新发布你的评论作为答案,我会接受它,这样你会得到一些分数。)

正如@Satevg所建议的,我有一个基于模型早期版本的自定义保存方法。如果任何地址字段发生更改,它会将预认证设置为“无”(早期版本中不是布尔值)


(@Satevg-如果你想重新发布你的评论作为答案,我会接受它,这样你会得到一些分数。)

看起来真的很奇怪,你是否尝试在
person.save()之前
打印(person.precertified)


还要检查
models.py中是否有用于该类的
save()
方法;查看信号-例如
预保存

看起来很奇怪,您是否尝试在
person.save()之前打印(person.precertified)


还要检查
models.py中是否有此类的
save()
方法;查看信号-例如
预保存

看起来很奇怪,您是否尝试在person.save()之前打印(person.precertified)?还要检查是否有save()这个类在models.py中的方法;看看信号-例如pre-save@Satevg:是的!我简直不敢相信我错过了。我有一个自定义的保存方法,它基于以前版本的模型,如果地址更改,则将“预认证”设置为“无”。拍拍额头谢谢!添加注释作为答案:)看起来真的很奇怪,是否尝试在person.save()之前打印(person.precertified)?还要检查models.py中是否有该类的save()方法;看一看信号-如预-save@Satevg:是的!我真不敢相信我错过了。我有一个自定义的save方法,它基于模型的早期版本,如果地址被更改,则将precertification设置为None。拍拍额头谢谢!添加注释作为答案:)