尝试将数据添加到数据库时,我在Django管理员中遇到“完整性错误”。
追溯如下:
Environment: Request Method: POST Request URL: http://127.0.0.1:8000/site/admin/SilverInningsHelpline/classified/add/ Django Version: 1.6.4 Python Version: 2.7.3 Installed Applications: ('django_admin_bootstrapped.bootstrap3', 'django_admin_bootstrapped', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'SilverInningsHelpline', 'south') Installed Middleware: ('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware') Traceback: File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 114. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper 432. return self.admin_site.admin_view(view)(*args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 99. response = view_func(request, *args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 52. response = view_func(request, *args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner 198. return view(request, *args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper 29. return bound_func(*args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 99. response = view_func(request, *args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func 25. return func(self, *args2, **kwargs2) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/transaction.py" in inner 371. return func(*args, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view 1131. self.save_model(request, new_object, form, False) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in save_model 860. obj.save() File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/base.py" in save 545. force_update=force_update, update_fields=update_fields) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/base.py" in save_base 573. updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/base.py" in _save_table 654. result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/base.py" in _do_insert 687. using=using, raw=raw) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/manager.py" in _insert 232. return insert_query(self.model, objs, fields, **kwargs) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/query.py" in insert_query 1511. return query.get_compiler(using=using).execute_sql(return_id) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 903. cursor.execute(sql, params) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute 69. return super(CursorDebugWrapper, self).execute(sql, params) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute 53. return self.cursor.execute(sql, params) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/utils.py" in __exit__ 99. six.reraise(dj_exc_type, dj_exc_value, traceback) File "/home/siddharth/SilverInnings/venv/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute 53. return self.cursor.execute(sql, params) Exception Type: IntegrityError at /site/admin/SilverInningsHelpline/classified/add/ Exception Value: null value in column "category_id" violates not-null constraint
我的模型如下:
class Categories(models.Model): id = models.AutoField(primary_key=True) type = models.CharField(max_length=300) def __unicode__(self): return self.type class Subcategory(models.Model): id = models.AutoField(primary_key=True) parent = models.ForeignKey(Categories) name = models.CharField(max_length=300) def __unicode__(self): return self.name class Classified(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=256) contact_person = models.CharField(max_length=300) email = models.CharField(max_length=100) address = models.ForeignKey(Address) subcategory = models.ForeignKey(Subcategory) phone_number = models.BigIntegerField(max_length=20, default=0) image = models.ImageField(blank=True, upload_to='dynamic/img/') NO = 'NO' YES = 'YES' APPROVAL = ((NO, 'no'), (YES, 'yes')) active = models.CharField(choices=APPROVAL, default=NO, max_length=3) verified = models.CharField(choices=APPROVAL, default=NO, max_length=3) def __unicode__(self): return self.name
当我尝试从Admin进入分类表时,就会出现问题。
从这里尝试解决方案:
IntegrityError:“ city_id”列中的null值违反了非null约束,因为它与我的问题最接近。在该链接上尝试解决方案后,我的表如下所示:
class Categories(models.Model): id = models.AutoField(primary_key=True) type = models.CharField(max_length=300, unique=True, default='All', null=True) def __unicode__(self): return self.type class Subcategory(models.Model): id = models.AutoField(primary_key=True) parent = models.ForeignKey(Categories, null=True, blank=True, default='All') name = models.CharField(max_length=300) def __unicode__(self): return self.name class Classified(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=256) contact_person = models.CharField(max_length=300) email = models.CharField(max_length=100) address = models.ForeignKey(Address) subcategory = models.ForeignKey(Subcategory) phone_number = models.BigIntegerField(max_length=20, default=0) image = models.ImageField(blank=True, upload_to='dynamic/img/') NO = 'NO' YES = 'YES' APPROVAL = ((NO, 'no'), (YES, 'yes')) active = models.CharField(choices=APPROVAL, default=NO, max_length=3) verified = models.CharField(choices=APPROVAL, default=NO, max_length=3) def __unicode__(self): return self.name
但这并不能解决我的问题,现在我被困住了。
查看模型,您的category_id任何表中都不应包含字段。也许您更改了模型,但没有更改数据库中的表。现在,当您创建条目时,Django不会填充它不知道的字段,这会产生错误。您应该从表中删除不需要的字段。或者,如果有可能,您可以删除整个数据库并manage.py syncdb从头开始运行。
category_id
manage.py syncdb