Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python IntegrityError:尝试保存模型实例时不使用NULL约束_Python_Django - Fatal编程技术网

Python IntegrityError:尝试保存模型实例时不使用NULL约束

Python IntegrityError:尝试保存模型实例时不使用NULL约束,python,django,Python,Django,我知道这个问题问了很多,但没有一个答案能帮助我 我有两种型号:一种用于存储邮件,另一种用于存储发件人信息: class SenderInfo(models.Model): #to create unique id numbers sender = models.CharField(max_length=15) id_number = models.IntegerField(blank=True, null=True, default=None) class Messag

我知道这个问题问了很多,但没有一个答案能帮助我

我有两种型号:一种用于存储邮件,另一种用于存储发件人信息:

class SenderInfo(models.Model):
    #to create unique id numbers
    sender = models.CharField(max_length=15)
    id_number = models.IntegerField(blank=True, null=True, default=None)

class Messages(models.Model):
    message = models.ForeignKey(SenderInfo, related_name='messages')
    message_body = models.TextField()
当我尝试创建一个实例并
save()
它时,我会不断得到
IntegrityError:notnull约束失败:appconva\u messages.message\u id

完全回溯:

>>> from appconvo.models import SenderInfo, Messages
>>> s = SenderInfo(sender='charles')
>>> s.save()
>>> m = Messages(message_body='this is a test')
>>> m.save()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\base.py", line 808, in save
    force_update=force_update, update_fields=update_fields)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\base.py", line 838, in save_bas
e
    updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\base.py", line 924, in _save_ta
ble
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\base.py", line 963, in _do_inse
rt
    using=using, raw=raw)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\manager.py", line 85, in manage
r_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\query.py", line 1076, in _inser
t
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\models\sql\compiler.py", line 1112, in
 execute_sql
    cursor.execute(sql, params)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\backends\utils.py", line 79, in execut
e
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\backends\utils.py", line 64, in execut
e
    return self.cursor.execute(sql, params)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\backends\utils.py", line 64, in execut
e
    return self.cursor.execute(sql, params)
  File "C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site-packages\django\db\backends\sqlite3\base.py", line 328, i
n execute
    return Database.Cursor.execute(self, query, params)
IntegrityError: NOT NULL constraint failed: appconvo_messages.message_id
>>>
>>从AppConva.models导入SenderInfo,消息
>>>s=SenderInfo(sender='charles')
>>>美国储蓄银行
>>>m=消息(消息体=“这是一个测试”)
>>>m.save()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\base.py”,第808行,保存
强制更新=强制更新,更新字段=更新字段)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\base.py”,第838行,在save_bas中
E
更新=自我。保存表格(原始、cls、强制插入、强制更新、使用、更新字段)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\base.py”,第924行,保存
ble
结果=self.\u do\u insert(cls.\u base\u manager,using,fields,update\u pk,raw)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\base.py”,第963行,插入
rt
使用=使用,原始=原始)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\manager.py”,第85行,在manage中
r_法
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\query.py”,第1076行,插入
T
return query.get\u编译器(using=using).execute\u sql(return\u id)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\models\sql\compiler.py”,第1112行,在
执行sql
cursor.execute(sql,params)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\backends\utils.py”,执行部分第79行
E
返回super(CursorDebugWrapper,self).execute(sql,params)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\backends\utils.py”,执行部分第64行
E
返回self.cursor.execute(sql,params)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\utils.py”,第94行,在退出时__
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\backends\utils.py”,执行部分第64行
E
返回self.cursor.execute(sql,params)
文件“C:\Users\ELITEBOOK\.virtualenvs\codechallenge\lib\site packages\django\db\backends\sqlite3\base.py”,第328行,i
执行
返回Database.Cursor.execute(self、query、params)
IntegrityError:非空约束失败:AppConva\u messages.message\u id
>>>

根据您的代码,您需要在消息对象中指定发件人信息

>>> s = SenderInfo(sender='charles')
>>> s.save()
>>> m = Messages(message=s, message_body='this is a test')
>>> m.save()
或相同:

m = Messages.objects.create(message=s, message_body='your message')

根据您的代码,您需要在消息对象中指定SenderInfo

>>> s = SenderInfo(sender='charles')
>>> s.save()
>>> m = Messages(message=s, message_body='this is a test')
>>> m.save()
或相同:

m = Messages.objects.create(message=s, message_body='your message')

你能在你试图保存它的地方分享代码吗?@wm3ndez刚刚更新了帖子你能在你试图保存它的地方分享代码吗?@wm3ndez刚刚更新了帖子这是一个很好的答案,认为它会起作用,但我仍然有问题。真奇怪,我的代码打错了。谢谢你指出我的明显缺点stupidity@Amon快乐编码!快速提问:这种关系有意义吗?我把外键放在正确的模型里了吗?我希望能够为每个发件人发送多封邮件。然后能够显示出我想要的东西。我觉得奇怪的是“身份证号码”。另外,我猜字段名应该是sender_info,因为它引用了SenderInfo模型。这是一个很好的答案,我认为它会起作用,但我仍然有问题。真奇怪,我的代码打错了。谢谢你指出我的明显缺点stupidity@Amon快乐编码!快速提问:这种关系有意义吗?我把外键放在正确的模型里了吗?我希望能够为每个发件人发送多封邮件。然后能够显示出我想要的东西。我觉得奇怪的是“身份证号码”。另外,我猜字段名应该是sender_info,因为它引用的是SenderInfo模型。