我不知道为什么: makemigrations命令工作正常,但是当我从浏览器中插入一些东西时,终端输出错误消息.
文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\backends\mysql\operations.py",第172行,在validate_autopk_value引发ValueError(‘数据库后端不接受0为’ValueError:数据库后端不接受0作为AutoField的值。
在我的笔记/模型中
class notecategory(models.Model):
categoryname = models.CharField(max_length=150,null=False,default="")
isPublic = models.BooleanField()
owner = models.ForeignKey(User,on_delete=models.CASCADE,null=True,related_name='%(class)s_requests_created')
class note2(models.Model):
category = models.ForeignKey(notecategory,on_delete=models.CASCADE,null=True)
content = models.CharField(max_length =settings.CONSTANT_DICT['noteContentLen'] ,null=True)
book = models.ForeignKey(book,on_delete=models.CASCADE,null=True)
chapter = models.ForeignKey(chapter,on_delete=models.CASCADE,null=True)
sentence = models.ForeignKey(sentence,on_delete=models.CASCADE,null=True)
anchorAt = models.IntegerField(null=True)
highlightLen = models.IntegerField(null=True)
language = models.ForeignKey(language,on_delete=models.CASCADE, null=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True,related_name='%(class)s_requests_created')
在我的笔记/视图中
toSave = note2(book_id=int(bookId),chapter=chapterInstance, sentence_id = int(sentenceId),
category_id=int(categoryId), content=userInputNoteContent,anchorAt = int(anchorAt),highlightLen=int(highlightLen),
language=languageInstance,
owner=userInstance)
toSave.save()
在注意/迁移/001_initial.py中
class Migration(migrations.Migration):
initial = True
dependencies = [
('sentence', '0008_auto_20190118_1608'),
('language', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='note2',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.CharField(max_length=150, null=True)),
('anchorAt', models.IntegerField(null=True)),
('highlightLen', models.IntegerField(null=True)),
('book', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.book')),
],
),
migrations.CreateModel(
name='notecategory',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('categoryname', models.CharField(default='', max_length=150)),
('isPublic', models.BooleanField()),
('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notecategory_requests_created', to=settings.AUTH_USER_MODEL)),
],
),
migrations.AddField(
model_name='note2',
name='category',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='note.notecategory'),
),
migrations.AddField(
model_name='note2',
name='chapter',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.chapter'),
),
migrations.AddField(
model_name='note2',
name='language',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='language.language'),
),
migrations.AddField(
model_name='note2',
name='owner',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='note2_requests_created', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='note2',
name='sentence',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='sentence.sentence'),
),
]
全跟踪我粘贴了来自另一个类似模型/应用程序的错误,因为我没有复制原始消息
18/Jan/2019 19:46:47 "GET /readbook/?HTTP/1.1“2005809内部服务器错误: /savenote/ Traceback (最近一次调用):文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\core\handlers\exception.py",行34,在内部响应=get_response(请求)文件第126行中,在_get_response response = self.process_exception_by_middleware(e )中,请求)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\core\handlers\base.py",第124行,在_get_response response = wrapped_callback(request,*callback_args,**callback_kwargs)文件"D:\pythonworkspace\notetaking\read\views.py",第143行中,在savenote文件() "D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第717行中,在保存force_update=force_update中,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第747行,在save_base updated = self._save_table(raw,cls,force_insert,force_update )中使用,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",第830行,在_save_table result = self._do_insert(cls._base_manager,using,字段,update_pk,( raw)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\base.py",行868,在_do_insert using=using,raw=raw)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\manager.py",行82,在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\query.py",返回getattr(self.get_queryset(),name)(*args,**kwargs)文件manager_method行1133,在query.get_compiler(using=using).execute_sql(return_id)返回_insert文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1284行,在execute_sql中,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1237行中的self.as_sql()在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",文件as_sql中的self.query.objs文件1237行中,在"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",文件第1236行中,在self.prepare_value(字段,self.pre_save_val(字段),文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\sql\compiler.py",第1178行中的字段,以prepare_value值=field.get_db_prep_save(值,)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields\related.py",第937行,在get_db_prep_save返回self.target_field.get_db_prep_save(值,)文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields__init__.py",行790,在get_db_prep_save返回self.get_db_prep_value(value,connection=connection,文件"D:\software\WinPython-64bit-3.5.4.0Qt5\python-3.5.4.amd64\lib\site-packages\django\db\models\fields__init__.py",第957行,在get_db_prep_value value = connection.ops.validate_autopk_value( value ) File ValueError第172行中,validate_autopk_value引发ValueError(‘数据库后端不接受0为’ValueError:数据库后端不接受0作为AutoField值。
发布于 2019-01-18 12:04:21
数据库不能接受pk
、foreign key
值作为0
。但是您尝试将0
赋值为外键字段的值。因此,出现了错误。
要解决这个问题,请为pk
或foreign key
字段类型int
,big int
指定值>0。还补充说,如果您使用UUID
作为您的pk
,那么您也不能指定0
作为值。
https://stackoverflow.com/questions/54253092
复制相似问题