[英]Createsuperuser django.db.utils.IntegrityError: NOT NULL constraint failed
[英]Django models.DateTimeField django.db.utils.IntegrityError: NOT NULL constraint failed
问题是什么? 我已经用谷歌搜索,没有找到任何与我所拥有的东西接近的东西。 保存配置文件然后继续到下一页会产生错误。
我正在使用sqlite开发服务器。
谢谢。
models.py
class SchoolProfile(models.Model):
create_date = models.DateTimeField(
null=False, blank=False, **auto_now_add=True,**
verbose_name=u'Fecha de creación')
modification_date = models.DateTimeField(
null=False, blank=False, **auto_now=True,**
verbose_name=u'Fecha de última modificación')
cycle = models.CharField(
null=False, blank=False, max_length=9,
verbose_name='Ciclo escolar')
name = models.CharField(
null=False, blank=False, max_length=100,
verbose_name='Nombre de la escuela')
def __unicode__(self):
return '{} {}'.format(self.cycle, self.name)
class Meta:
db_table = 'Perfil Escolar'
ordering = ['id', 'name']
verbose_name = 'Perfil Escolar'
verbose_name_plural = 'Perfiles Escolares'
class Admin:
pass
class SchoolServices(models.Model):
school_profile = models.ForeignKey(
SchoolProfile,
on_delete=models.CASCADE)
tipo = models.IntegerField(
choices=SCHOOL_TYPE_CHOICES, default=SCHOOL_TYPE_KINDER,
verbose_name='Tipo de Escuela')
folio = models.CharField(
null=True, blank=True, max_length=40,
verbose_name='Folio')
def __unicode__(self):
return '{} [{}]'.format(self.tipo, self.folio)
class Meta:
db_table = 'Servicio Escolar'
ordering = ['tipo', 'folio']
verbose_name = 'Servicio Escolar'
verbose_name_plural = 'Servicios Escolares'
class Admin:
pass
表格
class SchoolProfileForm(ModelForm):
class Meta:
model = SchoolProfile
readonly_fields = (
'create_date',
'modification_date',)
fields = (
'cycle',
'name',)
class SchoolServicesForm(ModelForm):
class Meta:
model = SchoolServices
fields = (
'tipo',
'folio',)
views.py
class SchoolProfileView(LoginRequiredMixin, CreateView):
model = SchoolProfile
form_class = SchoolProfileForm
context_object_name = 'school'
template_name = 'profile/school_profile.html'
def get_success_url(self, **kwargs):
return reverse(
'profile_edit',
kwargs={'pk': self.object.id})
urls.py
urlpatterns = [
url(r'^create$',
views.SchoolProfileView.as_view(),
name='profile_create'), ]
使用“管理员”界面,我可以填写创建表单,但是在提交“保存”后,出现以下错误:
Internal Server Error: /admin/profile/schoolprofile/add/
Traceback (most recent call last):
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: NOT NULL constraint failed: Perfil
Escolar.create_date
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/exception.py", line 41, in inner
response = get_response(request)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 551, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/sites.py", line 224, in inner
return view(request, *args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1508, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 67, in _wrapper
return bound_func(*args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/decorators.py", line 63, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1408, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 1448, in _changeform_view
self.save_model(request, new_object, form, not add)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/contrib/admin/options.py", line 979, in save_model
obj.save()
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 807, in save
force_update=force_update, update_fields=update_fields)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 837, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 923, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/base.py", line 962, in _do_insert
using=using, raw=raw)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/query.py", line 1076, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1107, in execute_sql
cursor.execute(sql, params)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 80, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
File "/Users/francisco.benavides/.pyenv/versions/django311/lib/python3.4/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: Perfil Escolar.create_date
看来您的日期时间字段(create_date)不为null,我认为未分配日期字段值,有两个处理此错误
如果需要datetime字段,则可以执行以下操作
class SchoolProfile(models.Model):
create_date = models.DateTimeField(
null=False, blank=False,
verbose_name=u'Fecha de creación',auto_now_add=True)
我在插入新记录时在create_date中添加了额外的关键字,它需要使用当前日期时间作为您当地的时区
如果不需要日期时间
class SchoolProfile(models.Model):
create_date = models.DateTimeField(
null=True, blank=True,
verbose_name=u'Fecha de creación')
发生该错误是因为您没有给NOT NULL字段赋值。 在您的情况下,NOT NULL字段为'created_date'和'modification_date'
您可以使用auto_now-add = True使其仅在创建对象时自动获取该字段的当前系统时间。 因此,您可以将它用于created_date,因为它仅在对象创建时更新。
如果是modification_date,则需要在对对象进行的所有修改中对其进行更新。 为此,可以使用“ auto_now = True”。
它看起来像这样:
class SchoolProfile(models.Model):
created_date = models.DateTimeField(null=False, blank=False, auto_now_add=True, verbose_name='Fecha de creación')
modification_date = models.DateTimeField(
null=False, blank=False, auto_now=True,
verbose_name=u'Fecha de última modificación')
#Remaining code.....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.